在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
解题思路
原地交换,让对应的数字放在对应位置上,若对应位置已符合,说明数字重复
题目已经说了长度为n,且数字都在 0~n-1 的范围内,不用担心数组越界问题
需要考虑一种特殊情况,就是可能数字开始就在对应的位置上
代码
func findRepeatNumber(nums []int) int {
for index, n := range nums {
if index != n && n == nums[n] {
return n
}
nums[index], nums[n] = nums[n], nums[index]
}
return 0
}

该博客讨论了一种解决数组中重复数字的问题,利用原地交换的方法,将数字放到其对应索引位置,从而找到任意一个重复的数字。代码实现了一个名为findRepeatNumber的函数,遍历数组并进行交换,当找到不在正确位置的数字且该数字位置上的数字也与其不同时,返回该重复数字。
366

被折叠的 条评论
为什么被折叠?



