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

2024-01-28 22:09:54 浏览数 (1)

链接

找出数组中重复的数字。

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

示例 1:

代码语言:javascript复制
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3

说明

  • 2 <= n <= 100000

思路

倒序思考

代码语言:javascript复制
// 此题可以定义一个map来判断,但是有没有更好地方法不开辟新的空间来做,
// 由于数组中的元素都大于等于0,把对应位置的值变为负数
func findRepeatNumber(nums []int) int {
    for _,j := range nums {
        if j < 0 {
            j = -1 * j
        }
        if nums[j] < 0 {
            return j
        }else{
            nums[j] = -1 * j //设置为负数
        }

    }

    return 0 // 由于0没有办法变为负数,所以一旦走到这里,一定是0
}

0 人点赞