一、题目:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。例如数组为{1,3,5,7,1,3,5,9},找出7和9。
二、解答:
1、运用异或运算符的解法
我们先考虑上述问题的简单版本: 一个数组里面只有一个数字出现一次,其他都出现两次,请找出这个数字。
这个问题可以可以使用用异或的性质解决。异或的性质:对于整数a,有
(1) a^a=0
(2)a^0=a
(2)a^b^c=a^(b^c)=(a^c)^b
利用以上的性质,上面的题目的解法为:
public static void findNumAppearOnce(int[] arr) { int result = 0; for (int i = 0; i < arr.length; i++) { result ^= arr[i]; } System.out.println(result);