码迷,mamicode.com
首页 > 其他好文 > 详细

220 Contains Duplicate III

时间:2015-08-07 06:59:40      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

220 Contains Duplicate III 

这道题用dic来记录上一次桶区间内的下标,唯一的trick是比较周边的一共三个桶

class Solution:
    # @param {integer[]} nums
    # @param {integer} k
    # @param {integer} t
    # @return {boolean}
    def containsNearbyAlmostDuplicate(self, nums, k, t):
        if k <= 0 or t < 0:
            return False
        dic = {}
        for i in xrange(len(nums)):
            b = nums[i]/(t+1)
            for v in [b-1,b,b+1]:
                if v in dic and abs(nums[dic[v]]-nums[i]) <= t:
                    return True
            dic[b] = i
            if i >= k:
                del dic[nums[i-k]/(t+1)]
        return False

 

220 Contains Duplicate III

标签:

原文地址:http://www.cnblogs.com/dapanshe/p/4709660.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!