如果帮助到您,还请点个关注吧,hahaha
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。
示例 1:
输入: nums = [1,2,3,1], k = 3
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1
输出: true
示例 3:
输入: nums = [1,2,3,1,2,3], k = 2
输出: false
#最直观的思路
这到题可以利用哈希查表来做,如果用两个for循环做的话最后一个测试样例会报超时
首先建立一个字典。
然后将元素nums[i]存为key,将i存为value,
遇到一个元素时判断字典里是否已经存在该值,若存在则判断其value是否小于i-k
若满足条件则返回True
反之则将该元素存入字典里
class Solution:
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
k_nums = {
}
for i in range(len(nums)):
if nums[i] in k_nums and k_nums[nums[i]] >= i - k:
return True
k_nums[nums[i]] = i
return False