题目大意:给出一个一维数组,该数组中每个元素的值都出现过两次只有一个元素值只出现一次,现在找出这个元素。要求在线性时间内完成,不适用额外的空间。
算法思想:
1.对数组排序
2.遍历数组,比较相邻的两个元素值是否相同,若相同则比较下一组相邻元素,若不相同则返回该元素。注意迭代器的值每次递增2
代码如下:
class Solution {
public:
int singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<int>::iterator pos;
for(pos=nums.begin();pos!=nums.end();pos+=2){
if(*pos==*(pos+1))
continue;
return *pos;
}
}
};