再来一道通过率第二高的题目~是中等难度咯!
题目的意思是在一个数组中,所有的数都出现了两次,只有一个数只出现了一次,找出这个数。
这当然难不倒我哈哈哈哈哈!
可是,可是,要求O(n)时间,而且O(1)内存,这……
我再想想。。。
遍历一次。。就找到。。只出现一次的数。。。
还是看下题解吧。啊啊啊啊啊啊啊!原来这么简单!就只要用异或来做就行了!
a ^ 0 = a
a ^ a = 0
好简单啊我怎么忘了这个!
好吧,一分钟解题,设一个常量0,然后遍历一遍,异或每一个数,出现两次的就异或成0了,只出现一次的就剩下咯
class Solution {
public:
int singleNumber(vector<int>& nums) {
vector<int>::iterator it;
int tmp = 0;
for (it=nums.begin();it!=nums.end();it++) {
tmp ^= *it;
}
return tmp;
}
};