【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

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

相关推荐
上不如老下不如小3 分钟前
2025年第七届全国高校计算机能力挑战赛 决赛 Java组 编程题汇总
java·python·算法
兩尛7 分钟前
查找接口成功率最优时间段 (c卷)
c语言·开发语言·算法
再__努力1点7 分钟前
【59】3D尺度不变特征变换(SIFT3D):医学影像关键点检测的核心算法与实现
人工智能·python·算法·计算机视觉·3d
小白量化10 分钟前
量化研究--上线完成强大的金融数据库3.0系统
数据库·人工智能·python·算法·金融·量化·qmt
roman_日积跬步-终至千里10 分钟前
【计算机算法与设计(8)】最小生成树算法(Kruskal 算法和 Prim 算法)
算法
e疗AI产品之路11 分钟前
心电QRS波形识别之Pan-Tompkins算法介绍
算法·pan-tompkins
一碗白开水一11 分钟前
【论文阅读】DALL-E 123系列论文概述
论文阅读·人工智能·pytorch·深度学习·算法
Yupureki13 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-模拟
c语言·数据结构·c++·算法·visual studio
资深web全栈开发13 分钟前
LeetCode 3583: 统计特殊三元组 - 从 O(n³) 到 O(n) 的顿悟之旅
算法·leetcode
早睡的叶子14 分钟前
AI 编译器中的 SRAM 内存分配管理算法调研
前端·人工智能·算法