题解 go语言解法| #数组中重复的数字#
数组中重复的数字
http://www.nowcoder.com/practice/623a5ac0ea5b4e5f95552655361ae0a8
关键在于题目给出数据的范围 0 到 n-1,一个长度为n的数组,其下标也是在 0 到 n-1之间。逆向思维,假设给定的数组nums里没有重复的元素,那么该数组的值可以视为数组下标的一种置换,当前情况下nums[i] 不一定等于 i,我们可以通过一次遍历算法使得nums[i]=i,如果nums中有重复的元素,即使经过一次遍历算法后,一定会存在nums[i] != i的情况,这就是重复的元素。
package main
func Duplicate(nums []int, duplication *[1]int) bool{
for i:=0; i<len(nums); i++ {
if i != nums[i] {
if nums[i] == nums[nums[i]] {
duplication[0] = nums[i]
return true
}
nums[nums[i]], nums[i] = nums[i], nums[nums[i]]
}
}
duplication[0] = -1
return false
}作者:user2680
链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/solution/go-onshi-jian-95-by-user2680-qvoi/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

