219. Contains Duplicate II

2017-07-03  本文已影响0人  byr_hfaltgg

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

上一篇下一篇

猜你喜欢

热点阅读