在 Java 中找出只出现一次的数字,其他数字均出现两次

在这个问题中,我们得到了一个整数数组。在给定的数组中,每个元素都出现了两次,只有一个元素只出现了一次。我们需要找出只出现一次的那个数字。在这篇文章中,我们将学习如何在 Java 中找到只出现一次的数字,而其他所有数字都出现了两次。

场景1

除了数字 4 之外,其他所有数字都出现了两次,所以 4 是唯一出现一次的数字。

场景2

除了10之外,所有其他数字都出现了两次,所以10是唯一只出现一次的数字。

以下是在 Java 中找出 只出现一次的一个数字的不同方法:

一. 暴力破解法

在该方法中,我们使用嵌套循环来检查数组中的每个元素,并统计每个元素出现的次数。最终返回数组中仅出现一次的元素。

示例

import java.util.*;
public class FindUniqueNumber {
    public static int findUnique(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            int count = 0;
            for (int j = 0; j < n; j++) {
                if (arr[i] == arr[j]) {
                    count++;
                }
            }
            if (count == 1) {
                return arr[i];
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int[] arr = {4, 3, 4, 5, 3};
        System.out.println("The number that appears once is: " + findUnique(arr));
    }
}

上述程序的输出结果如下:

二. 利用异或(XOR)的高效解法

异或运算符具有以下特性:

异或运算遵循交换律结合律,这意味着异或运算的执行顺序不影响最终结果。异或解法是一种效率更高的方法。在该方法中,我们对数组中的所有元素依次进行异或运算:所有出现两次的数字会相互抵消(结果为 0),最终剩下的结果就是只出现一次的数字。

示例

import java.util.*;
public class FindUniqueNumber {
    public static int findUnique(int[] arr) {
        int answer = 0;
        for (int num : arr) {
            answer = answer ^ num;
        }
        return answer;
    }
    public static void main(String[] args) {
        int[] arr1 = {1, 2, 3, 3, 2, 4, 1, 5, 5};
        System.out.println("The number that appears once is: " + findUnique(arr1));
    }
}

上述程序的输出结果如下:

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容