136.Single Number

你快乐吗?

Posted by bbkgl on September 26, 2019

136. Single Number

C++,位运算,按位异或。

int a = 0, b = 5;
a = a ^ b;  // a = 5
a = a ^ b;  // a = 0

根据上述规律,即一个数b与初始为0的数a按位异或两次,a就会变成0。

同理,本题中数组nums中所有出现两次的数与初始为0的数a按位异或两次,a都会变成0。

所以最后a就会变成只与a按位异或一次的那个数。

代码如下:

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