问题:给一个int数组,所有元素均出现2次除了其中一个只出现1次,找出该数。
思路:建立hash表:遍历数组元素,如果发现hash中没有出现当前元素,就将当前元素插入hash表;如果hash表已经存在该元素,就将该元素删除。最后hash剩下的那个数就是只出现一次的数。
class Solution {
public:
int singleNumber(vector<int>& nums) {
if(nums.size()==0) return -1;
unordered_set<int> dict;
for(int i=0;i<nums.size();i++){
if(dict.count(nums[i])){
dict.erase(nums[i]);
}else{
dict.insert(nums[i]);
}
}
unordered_set<int>::iterator iter=dict.begin();
return *iter;
}
};