219. Contains Duplicate II

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的就可以,所以按顺序遍历的时候只存最大的下标就好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容