其他分享
首页 > 其他分享> > LeetCode136.只出现一次的数字[异或运算典例]

LeetCode136.只出现一次的数字[异或运算典例]

作者:互联网

这种去重类的题目,用使用set或者map是常规套路;

但是用异或运算会很有逼格啊哈哈

其实也是套路满满

异或运算法则:

0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
即相应位的值相同的,结果为 0,不相同的结果为 1。

排序查找的笨方法:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size()-1;i+=2){
            if(nums[i]!=nums[i+1])
                return nums[i];
        }
        return nums[nums.size()-1];
    }
};

异或运算:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int a=0;
        for(int i = 0;i<nums.size();i++){
            a^=nums[i];
        }
        return a;
    }
};

标签:典例,运算,nums,int,异或,vector,LeetCode136,public
来源: https://blog.csdn.net/qq_41895747/article/details/104752782