Leetcode: . 存在重復元素 III
阿新 • • 發佈:2018-09-25
urn nta block abs mov als 之間 整數 給定一個整數數組
# . 存在重復元素 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
自己沒做出來,看了別人的題解,技巧性在於t = 0 時的判斷,不然會超時。。。
Python
class Solution: def containsNearbyAlmostDuplicate(self, nums, k, t): """ :type nums: List[int] :type k: int :type t: int :rtype: bool """ if len(nums) == 0 or k == 0: return False tmp = set() tmp.add(nums[0]) for i in range(1,len(nums)): if t == 0: if nums[i] in tmp: return True else: for j in tmp: if abs(nums[i] - j) <= t: return True; tmp.add(nums[i]) # 把當前這個元素加入到set中。 if len(tmp) > k: tmp.remove(nums[i-k]) return False
Leetcode: . 存在重復元素 III