从一个数组中查找到不重复的元素,我总结了三种方法

方法一:使用异或运算

异或运算有一个重要的性质:任何数与自身异或结果为 0,任何数与 0 异或结果为其本身。 因此,数组中所有元素进行异或运算,成对出现的元素会被抵消掉,最终剩下的就是那个不重复的元素

public static void main(String[] args) {
        int[] array = {1, 1, 2, 2, 3, 3, 4, 5, 5};

        int uniqueElement = findUniqueElement(array);
        System.out.println("不重复的元素是: " + uniqueElement); // 输出: 4
    }

    public static int findUniqueElement(int[] array) {
        int unique = 0;
        for (int num : array) {
            unique ^= num;
        }
        return unique;
    }

方法二:使用双层for循环

    public static void main(String[] args) {
        int[] array = {1, 1, 2, 2, 3, 3, 4, 5, 5};

        int uniqueElement = findUniqueElement(array);
        System.out.println("不重复的元素是: " + uniqueElement); // 输出: 4
    }

    public static int findUniqueElement(int[] array) {
        int max = Arrays.stream(array).max().orElseThrow(() -> new IllegalArgumentException("数组为空"));
        int[] count = new int[max + 1];

        // 统计每个元素出现的次数
        for (int num : array) {
            count[num]++;
        }

        // 找到出现次数为 1 的元素
        for (int num : array) {
            if (count[num] == 1) {
                return num;
            }
        }

        throw new IllegalArgumentException("没有找到不重复的元素");
    }

image.png