【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

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

相关推荐
sheeta19981 分钟前
LeetCode 每日一题笔记 日期:2026.05.18 题目:1345. 跳跃游戏 IV
笔记·leetcode·游戏
Misnearch11 分钟前
1345. 跳跃游戏 IV
java·leetcode·bfs
Huangjin007_36 分钟前
【C++ STL篇(九)】map容器——零基础入门与核心用法精讲
开发语言·c++·算法
数智工坊39 分钟前
【SigLIP论文阅读】:重新定义视觉-语言预训练的损失函数——VLA模型的“语言理解“基石
论文阅读·人工智能·算法·计算机视觉·语言模型
khalil10201 小时前
代码随想录算法训练营Day-53 图论01 | 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
算法
IronMurphy1 小时前
【算法四十六】300. 最长递增子序列
算法
罗超驿1 小时前
15.面试高频考点:MySQL索引底层原理与实战要点全梳理
mysql·面试·职场和发展
碧海银沙音频科技研究院1 小时前
高通QCC3084-QCC518X蓝牙耳机项目
人工智能·深度学习·算法
兩尛1 小时前
compare_exchange_weak 的用法
算法
数智工坊1 小时前
面向具身操作的视觉-语言-动作模型:让机器人真正理解并执行人类指令
论文阅读·人工智能·算法·机器人