设置一个字典,遍历数组,记录元素下标,若碰到重复元素,与字典中存储的下标比较,若满足条件返回:
class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool: num_pos = dict() for i,val in enumerate(nums): if val in num_pos: if i - num_pos[val] <= k: return True else: num_pos[val] = i else: num_pos[val] = i return False时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( n ) O(n) O(n)。
官方解答:https://leetcode-cn.com/problems/contains-duplicate-ii/solution/cun-zai-zhong-fu-yuan-su-ii-by-leetcode/
其他用户亮点解答:https://leetcode-cn.com/problems/contains-duplicate-ii/solution/hua-jie-suan-fa-219-cun-zai-zhong-fu-yuan-su-ii-by/