美文网首页
219. Contains Duplicate II

219. Contains Duplicate II

作者: byr_hfaltgg | 来源:发表于2017-07-03 03:56 被阅读0次

    Contains Duplicate II
    给一int数组和int K,问数组中有没有下标差不超过K的相同数字。
    先给自己的代码:

        def containsNearbyDuplicate(self, nums, k):
            """
            :type nums: List[int]
            :type k: int
            :rtype: bool
            """
            usedInt = {}
            for i in range(len(nums)):
                if nums[i] not in usedInt:
                    usedInt[nums[i]] = [i]
                else:
                    for seNum in usedInt[nums[i]]:
                        if -k <= seNum - i <= k:
                            return True
                    usedInt[nums[i]].append(i)
            return False
    

    然后再上Solutions上的

    def containsNearbyDuplicate(self, nums, k):
        dic = {}
        for i, v in enumerate(nums):
            if v in dic and i - dic[v] <= k:
                return True
            dic[v] = i
        return False
    

    基本思路都是一样的,就是把数组里的数字当做下标,下标当做内容存在dict里,不过大神的用到了enumerate()函数来同时遍历下标和内容,学到了。
    同时我把相同数字的下标全部存在dict里,存了一个list,但是大神只存当前遍历到的下标,原因是只要存在一个下标差不超过K的就可以,所以按顺序遍历的时候只存最大的下标就好。

    相关文章

      网友评论

          本文标题:219. Contains Duplicate II

          本文链接:https://www.haomeiwen.com/subject/ohnpcxtx.html