题目:
分析:
这道题有一个比较有意思的点,就是他要求时间复杂度是O(n),空间复杂度是N(1)
如果没有这两个要求的话,这道题就有很多解法
但有这两个要求就需要好好思考一下了
如果大家熟悉 异或 的话,这道题应该是非常简单的了
int a=2;
a^a=0;
两个相同的数,异或后是0
而0和任意数异或,均为那个数本身
明白这一点之后,这道题的解法就出来了
对整个数组进行异或运算,最后的答案就是结果
代码:
class Solution {
public int singleNumber(int[] nums) {
int res=nums[0];
for(int i=1;i<nums.length;i++){
res=res^nums[i];
}
return res;
}
}
结果: