136.只出现一次的数字

题目描述

题解

哈希表

异或运算

异或运算满足交换律,a^b^a=a^a^b=b,因此ans相当于nums[0]^nums[1]^nums[2]^nums[3]^nums[4]….. 然后再根据交换律把相等的合并到一块儿进行异或(结果为0),然后再与只出现过一次的元素进行异或,这样最后的结果就是,只出现过一次的元素(0^任意值=任意值)

简单来说: 就是相同的数异或得0, 任意数与0异或还是这个数不变. 对只有一个数字出现一次, 其他所有数字都出现两次的数组, 挨个异或, 那么最终的结果就是这个只出现一次的数字

1
2
3
4
5
6
7
8
9
class Solution {
public int singleNumber(int[] nums) {
int ans = nums[0];
for(int i = 1;i<nums.length;i++){
ans ^=nums[i];
}
return ans;
}
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗