找出落单的数


题目

一个数组里除了某一个数字之外,其他的数字都出现了两次。请写出程序找出这个只出现一次的数字

答案

对数组进行连续异或,重复的都会被消除,最后剩下的就是落单的数

public class T1_3 {
    public static void main(String[] args) {
        //创建101位的数组
        int N = 101;

        int arr[] = new int[101];
        //步长为2,前100位相邻元素相同
        for (int i = 0; i < N - 2; i=i+2) {
            arr[i] = i;
            arr[i+1] = i;
        }
        //最后一位为随机数,这里没有进行打乱
        arr[N-1]= new Random().nextInt(N);
        System.out.println(Arrays.toString(arr));

        //连续异或,重复的都会被消掉
        int x1 = 0;
        for (int i = 0; i < N; i++) {
            x1=x1^arr[i];
        }
        System.out.println(x1);
    }
}

文章作者: WJF
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WJF !
  目录