LeetCode刷题之路:219. 存在重复元素 II

如果帮助到您,还请点个关注吧,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

猜你喜欢

转载自blog.csdn.net/as812252319/article/details/114666902