【LeetCode】219.存在重复元素II

1. 题目

2. 分析

3. 代码

python 复制代码
class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        num2index = defaultdict(list)
        for idx,num in enumerate(nums):
            num2index[num].append(idx)
        
        for key, val in num2index.items():
            if len(val) >= 2:
                for i in range(len(val)-1):
                    nex = val[i+1]
                    if abs(nex - val[i]) <= k:
                        return True
        return False

上面这版代码空间复杂度还不是最优,原因是存储了非窗口内的元素。最优解的做法是:在滑动窗口的过程中动态的维护一个哈希表,哈希表中存储的内容是某个元素上一次出现的下标。 我记得滑动窗口类的题目好多都是这种做法。

相关推荐
哎嗨人生公众号8 分钟前
手写求导公式,让轨迹优化性能飞升,150ms变成9ms
开发语言·c++·算法·机器人·自动驾驶
foundbug99912 分钟前
STM32 内部温度传感器测量程序(标准库函数版)
stm32·单片机·嵌入式硬件·算法
Hello.Reader12 分钟前
为什么学线性代数(一)
线性代数·算法·机器学习
_深海凉_19 分钟前
LeetCode热题100-找到字符串中所有字母异位词
算法·leetcode·职场和发展
木井巳23 分钟前
【递归算法】目标和
java·算法·leetcode·决策树·深度优先
zjeweler23 分钟前
“网安+护网”终极300多问题面试笔记-全
笔记·网络安全·面试·职场和发展
旖-旎29 分钟前
哈希表(字母异位次分组)(5)
数据结构·c++·算法·leetcode·哈希算法·散列表
别或许36 分钟前
4、高数----一元函数微分学的计算
人工智能·算法·机器学习
_深海凉_42 分钟前
LeetCode热题100-最长连续序列
算法·leetcode·职场和发展
这里没有酒44 分钟前
[信息安全] AES128 加密/解密 --> state 矩阵
算法