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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务