位运算————只出现一次的数字
使用异或,最后得到的结果是就是。
笨方法:
1 class Solution { 2 public: 3 int singleNumber(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 if(nums.size()==1) return nums[0]; 6 if(nums[nums.size()-1]!=nums[nums.size()-2]) return nums[nums.size()-1]; 7 for(int i=0;i<nums.size()-2;i++){ 8 if(nums[i]!=nums[i+1]) return nums[i]; 9 else i++; 10 } 11 return 0; 12 } 13 };
异或计算:
1 class Solution { 2 public: 3 int singleNumber(vector<int>& nums) { 4 int res=nums[0]; 5 for(int i=1;i<nums.size();i++){ 6 res = res^nums[i]; 7 } 8 return res; 9 } 10 };