陣列中出現一次的兩個數 leetcode Single Number III
阿新 • • 發佈:2019-02-07
值得注意的是::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迴圈無法進入!!!!