题目
给你一个整数数组
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) <= k
if num in num_dict and abs(i - num_dict[num]) <= k:
return True
# 更新哈希表,存储当前元素及其索引
num_dict[num] = i
# 如果没有找到满足条件的元素,返回 False
return False
nums = [1, 2, 3, 1]
k = 3
print(containsNearbyDuplicate(nums, k)) # 输出: True
标签:abs,nums,重复,复杂度,元素,II,num,数组,LeetCode
From: https://blog.csdn.net/weixin_74254879/article/details/141440218