# 哈希表
# 思路比较简单,建立一个新字典,然后依次把整数添加到字典中,
# 若遇到已经存在的整数,判断输出即可。
# 字典优势在于,不符合判断时,会更新整数。
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
nums_dict = {}
for i, v in enumerate(nums):
if v in nums_dict and abs(i - nums_dict[v]) <= k:
return True
nums_dict[v] = i
return False
方法二:滑动窗口
思路:此算法思路非常巧妙,我们用逆向思维来剔除超出范围的整数。然后循环依次判断即可。
# 滑动窗口
# 此算法思路非常巧妙,我们用逆向思维来剔除超出范围的整数。
# 然后循环依次判断即可。
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
nums_set = set()
for i, num in enumerate(nums):
if i > k:
nums_set.remove(nums[i - k - 1])
if num in nums_set:
return True
nums_set.add(num)
return False