题目:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
示例 1:
输入: [2,2,1] 输出: 1
示例 2:
输入: [4,1,2,1,2] 输出: 4
知识点:
位运算中,异或运算符合结合律和交换律,因此可以消除一组数中相同的元素,留下只出现一次的元素。
import java.util.Scanner;
public class Main {
public static int findTimes(int[] arr){
int ret = 0;
for (int i = 0; i < arr.length; i++) {
ret ^= arr[i];
//异或运算是符合交换律的,所以这里最后的异或结果就是只出现一次的数字
}
return ret;
}
public static void main(String[] args) {
int[] arr = {1,1,2,3,3,4,4};
System.out.println(findTimes(arr));
}
}