220. 存在重複元素 III

給定一個整數數組,判斷數組中是否有兩個不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的絕對值最大爲 t,並且 i 和 j 之間的差的絕對值最大爲 ķ。

示例 1:

輸入: nums = [1,2,3,1], k = 3, t = 0
輸出: true
示例 2:

輸入: nums = [1,0,1,1], k = 1, t = 2
輸出: true
示例 3:

輸入: nums = [1,5,9,1,5,9], k = 2, t = 3
輸出: false

Python

class Solution:
    def containsNearbyAlmostDuplicate(self, nums, k, t):
        """
        :type nums: List[int]
        :type k: int
        :type t: int
        :rtype: bool
        """
        a = set()
        for i in range(len(nums)):
            # 0 只要有重複元素,abs 肯定滿足
            if t == 0:
                if nums[i] in a:
                    return True
            else:
                for atem in a:
                    # k滿足,比較t即可
                    if abs(nums[i] - atem) <= t:
                        return True
            a.add(nums[i])
            ## max index sub  k
            if len(a) == k + 1:
                a.remove(nums[i - k])
        return False
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章