1.description
2.Solution
这道题一看就感觉是水题,但注意到要在线性的时间里面,不开辟额外的存储空间,那么确实是有点棘手。看了社区的讨论原来python可以用一行就能求解。是什么方法这么厉害?那就是Xor操作了,直观的感受两个相同的数取异或(转为二进制,按位取异或)之后最终的结果就是0,那么只要遍历一遍数组,对异或进行累积,那么最终得到的就是那个独立的数了。指的注意的是初值可以设置为0,因为一个数与0取异或还是等于本身。
以下为java源代码
class Solution{
public int singleNumber(int[] nums) {
int ans = 0;
for(int i=0;i<nums.length;i++)
ans ^= nums[i];
return ans;
}
}