注:此博客不再更新,所有最新文章将发表在个人独立博客limengting.site。分享技术,记录生活,欢迎大家关注
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
分析:
1、异或运算是相同得0,不同得1;
2、高位补零,凑齐位数,即10=1010,3=0011,二者异或后为1001=9。
This XOR operation works because it’s like XORing all the numbers by itself. So if the array is {2,1,4,5,2,4,1} then it will be like we are performing this operation
((22)(11)(44)(5)) => (000^5) => 5.
class Solution {
public:
int singleNumber(vector<int>& nums) {
int res = 0;
int n = nums.size();
for (int i = 0; i < n; i++)
res ^= nums[i];
return res;
}
};