题解
哈希
-
初试化哈希表 h a s h = { } hash= \{\} hash={}
-
遍历数组:
- 若 n u m s [ i ] nums[i] nums[i]不在 h a s h hash hash中,则令 n u m s [ i ] nums[i] nums[i]为key,value为当前的索引 i i i。
- 若已存在:
- 判断当前的索引和上一相同元素的索引差是否小于等于 k k k,即 i − h a s h [ n u m s [ i ] ] < = k i-hash[nums[i]]<=k i−hash[nums[i]]<=k。若满足,返回 T r u e True True。
- 将索引更新为当前索引, h a s h [ n u m s [ i ] ] = i hash[nums[i]]=i hash[nums[i]]=i
-
返回 F a l s e False False
复杂度分析
- 时间复杂度: O ( n ) O\left(n\right) O(n),进行了一次遍历。
- 空间复杂度: O ( n ) O(n) O(n),借助 h a s h hash hash存储过程。
Python
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
hash={}
for i in range(len(nums)):
if(nums[i] not in hash):
hash[nums[i]]=i
else:
if(i-hash[nums[i]]<=k):
return True
else:
hash[nums[i]]=i
return False