找只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
public static int oneSearch(int[] arr){
int ret = 0;
for (int i = 0; i < arr.length; i++) {
ret = ret ^ arr[i];
}
return ret;
}
public static void main(String[] args) {
int[] array1 = {1,1,2,3,2,9,9};//3
int[] array2 = {11,22,33,22,11,33,44};//44
int[] array3 = {54,54,2,1,3,2,3};//1
System.out.println(oneSearch(array1));
System.out.println(oneSearch(array2));
System.out.println(oneSearch(array3));
}
利用原理:
1.一样的数字异或,结果是0。
2.n^0=n。