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
public class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for (int i = 0; i<nums.length; i++)
{
result ^=nums[i];
}
return result;
}
}