您的位置:首页 > 其它

[LeetCode]Single Number

2014-04-01 15:09 239 查看

Single Number

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?

1. 不考虑多余内存空间,用HashMap解决很常规,时间复杂度为O(n)。

public class Solution {
public int singleNumber(int[] A) {
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();
int key,val;
val=0;
for(int i=0;i<A.length;i++){
if(map.containsKey(A[i])){
map.remove(A[i]);
}
else{
map.put(A[i],A[i]);
}
}
Iterator iter=map.keySet().iterator();
while(iter.hasNext()){
val=map.get(iter.next());
}
return val;
}
}


2. note里又说do it without using extra memory,这就难办了。想了很久没找到诀窍,最后求助万能互联网。

异或运算:^

4000

输入输入结果
110
101
011
000
代码变得十分简洁,太棒了!

public class Solution {
public int singleNumber(int[] A) {
for(int i=1;i<A.length;i++){
A[0]=A[0]^A[i];
}
return A[0];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode