给定一个整数数组和一个整数k,找出数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且i和j之间的绝对差最大为k。
Input: nums=[1,2,3,1,2,3] k=2
Output: False(nums[0]=nums[3], 3-0>2)
Input: nums=[1,2,2,2,1] k=2
Output: True(nums[1]=nums[3]=nums[2], 3-1=2, 2-1<2)
Clue: 用enumerate()函数得到每个数的位置i和值j;
建立一个字典dic{}key为数值j,value为对应的位置i;
当数值j已经存在于在字典中(duplicate)并且对应的位置i之间的差小于等于k时返回True
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
dic={}
for i,j in enumerate(nums):
if j in dic and (i-dic[j]<=k):
return True
dic[j]=i
return False