您的位置:首页 > 其它

[Leetcode] 136. Single Number

2015-04-12 00:37 417 查看
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?

这道题比较特殊,可以用异或来做

因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:
(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5


就把只出现了一次的元素(其余元素均出现两次)给找出来了,更general的做法要看single number ii

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