以下内容均参考至LeetCode评论区的大佬们
136.只出现一次的数字
https://leetcode-cn.com/problems/single-number/
public int singleNumber(int[] nums) {
//1. a ^ 0 = a
//2. a ^ b ^ c = a ^ c ^ b
//3. a ^ a = 0
int ans = 0;
for(int i = 0;i < nums.length;i++)
ans ^= nums[i];
return ans;
}
137.只出现一次的数字Ⅱ
https://leetcode-cn.com/problems/single-number-ii/comments/
public int singleNumber(int[] nums) {
int a = 0,b = 0;
//x第一次出现,a = x,b = 0
//x第二次出现,a = 0,b = x
//x第三次出现,a = 0,b = 0
for(int i = 0;i < nums.length;i++){
a = (a ^ nums[i]) & ~b;
b = (b ^ nums[i]) & ~a;
}
return a;
}