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?
这里用到了一个技巧:一个数和另一个数异或两次,结果仍是这个数.
class Solution{
public:
int singleNumber(vector<int> &nums){
if(nums.empty())
return -1;
int ret = nums[0];
for(vector<int>::iterator iter = nums.begin()+1; iter != nums.end(); ++iter){
ret = ret^ *iter;
}
return ret;
}
};
本文介绍了一种算法,可以在一个除了一个元素外所有元素都出现两次的整数数组中找到那个只出现一次的元素。该算法利用了异或运算的特性,实现了线性时间复杂度,并且没有使用额外的内存。
692

被折叠的 条评论
为什么被折叠?



