问题:
给定一个int[]数组arrs,每个数据都不为空
要求:返回数组中只出现过一次的数字
例如:[1,2,2,4,4] 返回:1
解决:
public int static getOnly(int[] arrs){
int i = 0;
for(int arr : arrs){
i ^=arr;
}
return i;
}
思路:异或 (i^=arr :i = i^arr)
- 相同的数字异或为0:1⊕1=0,0⊕0=0
- 0与任意数字异或等于本身:0⊕2=2
总结:所以数组中所有相同的数字异或都等于0,只出现一次的最后与0异或等于它本身;