您的位置:首页 > 其它

LeeCode_136 Single Number

2016-02-18 08:47 239 查看
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?

考虑使用异或运算来实现,异或运算为两个数各bit为一一比较,如果相同置为0,如果不同置为1.

两个性质:

a^b=b^a;

0^a=a;

所以只需将数列不断的对res做异或运算,肯定可以出现(n-1)/2个0, 还剩最后一个就是要找的数。

class Solution {
public:
int singleNumber(vector<int>& nums) {

int res=0;

for (int i=0;i<nums.size();i++)
res=res^nums[i];
return res;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: