1. 求集合中唯一重复的数或者唯一不重复的数
求法一:利用异或
两个相同的数进行异或,结果为0
将集合中所有的元素进行异或运算,得到的结果为最终的唯一重复的数或者唯一不重复的数,
原因:A ^ B ^ C ^ D ^ A ^ C ^ B=(A ^ A) ^( B ^ B) ^ (C ^ C) ^D=D,
例子:一个集合中只有一个数是只出现一次,其他数出现两次
public int singleNumber(int[] nums) {
int num = 0;
for(int i = 0; i < nums.length; i++){
num = num ^ nums[i];
}
return num;
}
求法二(适用于每两个不同的数的差距相等集合)
例子:集合中出现的数字有1-100,只有一个数不出现两次
解法:将1 到 100 相加,然后乘以 2 再减去集合中所有数的和