一、题目:

  一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。例如数组为{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);
View Code

相关文章: