讨论/题目交流/面试题56 - I. 数组中数字出现的次数。求问这两种写法有什么区别?为什么第二种通不过啊/
面试题56 - I. 数组中数字出现的次数。求问这两种写法有什么区别?为什么第二种通不过啊

求大佬解答。。
剑指offer面试题56 - I. 数组中数字出现的次数

class Solution {
public:
    vector<int> singleNumbers(vector<int>& nums) {
        int s = 0;
        for(int i=0; i<nums.size(); i++){
            s = s^nums[i];
        }
        int i = 0;
        while(s%2 == 0){//=============括号内换成 s&1==0 过不了
            s = s/2;
            i++;
        }
        vector<int> res(2,0);
        for(int j = 0; j<nums.size(); j++){
            if((nums[j]>>i) & 1){
                res[0] ^= nums[j];
            }else {
                res[1] ^= nums[j];
            }
        }
        return res;
    }
};
展开讨论
共 1 个讨论

很奇妙地,按位与运算符优先级比等于号低

1