题解 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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。