题目:
另外的方法是遍历,用map(键值表示数组中的元素,值表示每个元素出现的次数)
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 0;
int res=0;
for(vector<int>::size_type i=0;i<nums.size();++i){
res^=nums[i];
}
return res;
}
};
上面代码被注释掉的两行影响运行时间,注释前20ms,注释后16ms,所以在编写代码时要考虑周全,不要写多余的句子。
另外的方法是遍历,用map(键值表示数组中的元素,值表示每个元素出现的次数)
异或:0^a=a a^a=0