zoukankan      html  css  js  c++  java
  • 九度OJ-1351

    在何海涛解说中看到第34题,找出数组中只出现一次的两个数。

    九度收录在面试题40,题目1351.

    题目描述:
    一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
    按何老师算法手敲了一次,但因为不知道提交格式总是不能通过,在网上找了答案如下:
    unsigned int FindFirstBitIs1 (int num){ 
            int indexBit = 0; 
            
            while ((num & 1) == 0 && indexBit < 32){ 
                num >>= 1; 
                ++indexBit; 
            } 
            return indexBit; 
        } 
            
        int IsBit1 (int data, unsigned int indexof1){ 
            data >>= indexof1; 
            return data & 0x01; 
        } 
            
        void FindNumsAppearOnce (int data[], int n, int * num1, int * num2){ 
            int result = 0; 
            int i; 
            
            for (i=0; i<n; ++i){ 
                result ^= data[i]; 
            } 
            unsigned int indexof1 = FindFirstBitIs1 (result); 
            *num1 = 0; 
            *num2 = 0; 
            for (i=0; i<n; ++i){ 
                if (IsBit1 (data[i], indexof1)) 
                    *num1 ^= data[i]; 
                else 
                    *num2 ^= data[i]; 
            } 
        } 
            
        int main(void){ 
            int n; 
            int input[1000000]; 
            int i; 
            int num1; 
            int num2; 
            
            while (scanf ("%d", &n) != EOF){ 
                for (i=0; i<n; ++i) 
                    scanf ("%d", &input[i]); 
                FindNumsAppearOnce (input, n, &num1, &num2); 
                if (num1 < num2) 
                    printf ("%d %d
    ", num1, num2); 
                else 
                    printf ("%d %d
    ", num2, num1); 
            } 
            
            return 0; 
        }  

    【结果】奇怪的是,直接将代码复制到答题框中就能accept,注意main函数中的输入输出是c形式,修改为c++形式的cin,cout就总是不能通过,要么会超时(不晓得是不是这个原因)

    而且,数组设置的大小是1000000,在vc6中就不能运行,改为1000才可以……

    还没摸清九度规律。

  • 相关阅读:
    C#的默认访问权限
    隐藏基类成员
    索引指示器的重载
    索引指示器
    vector
    string 函数
    细胞个数
    计蒜客 T1096 石头剪刀布
    计蒜客 T1125 判断字符串是否为回文
    计蒜客 T1152 成绩排序
  • 原文地址:https://www.cnblogs.com/ketchups-notes/p/4217705.html
Copyright © 2011-2022 走看看