在一个长度为 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
}