Single NumberII

**一定要注意 == 运算符的优先级高于& 因此在条件判断的时候 必须加括号

class Solution {
public:
    int IsBit1(int num, int place)
    {
        num=num>>place;
        return num&1;
    }
    vector<int> singleNumber(vector<int>& nums) {
        int exclusiveOR=0;
        for(int i=0;i<nums.size();i++)
            exclusiveOR^=nums[i];
        int place=0;
        while(((exclusiveOR&1)==0) && (place<8*sizeof(int)))
        {
            exclusiveOR=exclusiveOR>>1;
            place++;
        }
        int num1=0;
        int num2=0;
        for(int i=0;i<nums.size();i++)
        {
            if(IsBit1(nums[i],place))
                num1^=nums[i];
            else
                num2^=nums[i];
        }
        vector<int> res;
        res.push_back(num1);
        res.push_back(num2);
        
        return res;
    }
};
posted on 2016-07-26 12:12  summerkiki  阅读(131)  评论(0编辑  收藏  举报