目 录CONTENT

文章目录

找出数组中出现次数为奇数的两个数

小磊
2023-04-25 / 0 评论 / 0 点赞 / 509 阅读 / 212 字 / 正在检测是否收录...

LeetCode第260题 找出数组中出现次数为奇数的两个数

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

public static void method(int[] arr) {
        int eor = 0;
        for (int i : arr) {
            eor ^= i;
        }
        int rigntOne = eor & (~eor + 1);//使eor中最右面的一位1保持为1,其余为次皆为0,该位为1说明出现奇数次的两个数在该位置不同
        int onlyone = 0;
        for (int j : arr) {
            //根据rigntOne的那一位是否是1将arr数组中的数分为两组,两组中恰好只会出现一个出现奇数次的数
            if ((rigntOne & j) == 0) {
                onlyone ^= j;
            }
        }
        System.out.println(onlyone + " " + (onlyone ^ eor));
    }
0

评论区