📜  在java中找出1到n个数字之间的重复数字(1)

📅  最后修改于: 2023-12-03 15:37:36.225000             🧑  作者: Mango

在Java中找出1到n个数字之间的重复数字

介绍

在进行开发过程中,我们可能会遇到这样一种场景:给定一个包含1到n个数字的数组,其中某些数字会出现重复,现在需要找出重复的数字并输出。

在本文中,我们将分享如何在Java中找出1到n个数字之间的重复数字,希望能够对您有所帮助。

解决方案
方案一:利用HashSet

HashSet是Java中的一个数据结构,可以用于存储不重复的元素。可以借助这个数据结构很好地实现我们的需求。

代码如下:

public static void findDuplicateNumber(int[] nums) {
    Set<Integer> set = new HashSet<>();
    for (int num : nums) {
        if (set.contains(num)) {
            System.out.println(num);
        } else {
            set.add(num);
        }
    }
}

这段代码的实现思路是,遍历数组中的每一个数字,如果该数字在HashSet中已经存在,则说明该数字是重复数字,将其输出即可;否则将该数字加入HashSet中。

方案二:利用排序

如果我们将数组进行排序,那么所有的重复数字都会出现在一起,可以通过遍历数组即可找到重复数字。

代码如下:

public static void findDuplicateNumber(int[] nums) {
    Arrays.sort(nums);
    for (int i = 1; i < nums.length; i++) {
        if (nums[i] == nums[i - 1]) {
            System.out.println(nums[i]);
        }
    }
}

这段代码的实现思路是,先将数组进行排序,然后遍历数组,如果当前数字与前一个数字相同,则说明该数字是重复数字,将其输出即可。

总结

本文中分享了两种解决方案,一种是利用HashSet数据结构,另一种是利用排序。两种方法各有优劣,选择哪种方法取决于具体的需求和场景。

无论选择哪种方法,我们在处理数组时一定要注意越界问题,避免出现不必要的错误。