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