class Solution(object):
def containsNearbyDuplicate(self, nums, k):
# 哈希表
d = {}
for i in range(len(nums)):
if nums[i] in d:
if -k <= i - d[nums[i]] <= k:
return True
d[nums[i]] = i
return False
# 排序
enum = [(n, i) for i, n in enumerate(nums)]
enum.sort()
for i in range(1, len(enum)):
a, b = enum[i-1], enum[i]
if a[0] == b[0] and abs(a[1]-b[1]) <= k:
return True
return False
# 滑动窗口
n = len(nums)
if (n <= 1):
return False
recode = set()
for i in range(n):
if nums[i] in recode:
return True
recode.add(nums[i])
if len(recode) > k:
recode.remove(nums[i - k])
return False