位运算————只出现一次的数字

使用异或,最后得到的结果是就是。

笨方法:

 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 };

 

posted @ 2019-06-18 15:40  Austin_anheqiao  阅读(135)  评论(0编辑  收藏  举报