03. 数组中重复的数字【排序/哈希/比较交换】

找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3

限制:

  • 2 <= n <= 100000

2. 解法1 - 排序

2.1 Java

class Solution {
    public int findRepeatNumber(int[] nums) {
        // 先对数组进行排序
        Arrays.sort(nums);
        // 排序之后只要碰到了连续相同的数字,返回即可
        for (int i=0;i<nums.length;i++) {
            if (nums[i] == nums[i+1])
                return nums[i];
        }
        return -1;
    }
}

2.2 Kotlin

3. 解法2 - 哈希表

3.1 Java

3.2 Kotlin

4. 解法3 - 比较交换

4.1 Java

4.2 Kotlin

5. 参考

6. 笔记

7. 标签

  • 数组

  • 哈希表

最后更新于

这有帮助吗?