存在重复元素 II(LeetCode)
题目
给你一个整数数组
nums
和一个整数k
,判断数组中是否存在两个 不同的索引i
和j
,满足nums[i] == nums[j]
且abs(i - j) <= k
。如果存在,返回true
;否则,返回false
。
解题
"""
时间复杂度为 O(n),空间复杂度为 O(min(n, k)),其中 n 是数组的长度
"""def containsNearbyDuplicate(nums, k):# 创建一个哈希表来存储元素及其对应的索引num_dict = {}# 遍历数组中的每个元素for i, num in enumerate(nums):# 如果当前元素已经存在于哈希表中,且满足 abs(i - j) <= kif num in num_dict and abs(i - num_dict[num]) <= k:return True# 更新哈希表,存储当前元素及其索引num_dict[num] = i# 如果没有找到满足条件的元素,返回 Falsereturn Falsenums = [1, 2, 3, 1]
k = 3
print(containsNearbyDuplicate(nums, k)) # 输出: True