|
发表于 2023-12-17 14:21:31
|
显示全部楼层
可以使用哈希表来解决这个问题。
我们可以遍历数组 nums,并将每个元素及其索引存储在哈希表中。对于每个元素 num[i],我们在哈希表中查找是否存在另一个索引 j,满足 nums[i] == nums[j] 且 abs(i - j) <= k。
如果找到了满足条件的索引 j,则返回 True。如果遍历完整个数组后都没有找到满足条件的索引 j,则返回 False。
下面是代码实现:
- def containsNearbyDuplicate(nums, k):
- num_dict = {} # 创建一个空的哈希表
- for i in range(len(nums)):
- if nums[i] in num_dict and abs(i - num_dict[nums[i]]) <= k:
- return True # 找到满足条件的索引 j
- num_dict[nums[i]] = i # 将当前元素及其索引存储在哈希表中
- return False # 遍历完整个数组后都没有找到满足条件的索引 j
- # 测试
- nums = [1, 2, 3, 1]
- k = 3
- print(containsNearbyDuplicate(nums, k)) # 输出 True
- nums = [1, 0, 1, 1]
- k = 1
- print(containsNearbyDuplicate(nums, k)) # 输出 True
- nums = [1, 2, 3, 1, 2, 3]
- k = 2
- print(containsNearbyDuplicate(nums, k)) # 输出 False
复制代码
希望能帮到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|