Featured image of post 剑指 Offer 03. 数组中重复的数字

剑指 Offer 03. 数组中重复的数字

题目描述

找出数组中重复的数字。

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

示例 1:

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

限制:

2 <= n <= 100000

解法一:原地交换

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
func findRepeatNumber(nums []int) int {
    idx := 0
    for idx < len(nums) {
        if nums[idx] != idx {
            if nums[nums[idx]] == nums[idx] {
                return nums[idx]
            }
            nums[nums[idx]], nums[idx] = nums[idx], nums[nums[idx]]
        } else {
            idx++
        }
    }
    return -1
}
Licensed under CC BY-NC-SA 4.0
最后更新于 2023/06/15 22:01:37
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计