1. 程式人生 > >陣列中出現一次的兩個數 leetcode Single Number III

陣列中出現一次的兩個數 leetcode Single Number III

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        vector<int> res;
        if(nums.size()==0) return res;
        res.push_back(0);
        res.push_back(0);
        int resultExclusive=0;
        for(int i=0;i<nums.size();i++)
        resultExclusive^=nums[i];
        int indexof1=0;
        while(((resultExclusive&1)==0)&&(indexof1<8*sizeof(int)))
        {
            resultExclusive=resultExclusive>>1;
            ++indexof1;
        }
        for(int i=0;i<nums.size();i++)
        {
            if((nums[i]>>indexof1)&1==1)
            res[0]^=nums[i];
            else
            res[1]^=nums[i];
        }
        return res;
    }
};
值得注意的是::
(resultExclusive&1)==0)
(resultExclusive&1)一定要加(),否則因為==的優先順序高於&,會導致while迴圈無法進入!!!!