219 Contains Duplicate II

原题链接:Contains Duplicate II
这题的答案是我在leetcode官方论坛上找的,我自己写的代码超时了=_=......
以下是代码:

class Solution:
    # @param {integer[]} nums
    # @param {integer} k
    # @return {boolean}
    def containsNearbyDuplicate(self, nums, k):
        d = {}
        for i in range(len(nums)):
            if nums[i] in d:
                j = d[nums[i]]
                if i - j <= k:
                    return True
            d[nums[i]] = i
        return False

简单说两句:
之前我的做法用了两层循环,比较蠢。这个人的做法很好,巧妙的利用了字典这个数据结构。

首先,遍历nums这个数组(更准确地说是list)。当某个值第一次出现时,在字典中记录下这个值(以值为key,以该值出现的位置坐标为value)。接下来,若发现数组中的某个值已经存在于字典中,再进一步通过 存储在字典中的 上一次该元素出现的位置坐标,即value,来判断距离是否不大于k。

总结:注意理解和使用Python中基本的数据结构。

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

推荐阅读更多精彩内容