給定一個整數數組,判斷數組中是否有兩個不同的索引 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