【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

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

相关推荐
小O的算法实验室5 分钟前
2023年CIE SCI2区TOP,ACO+PSO+A*:一种用于 AUV 多任务路径规划的双层混合算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
Ro Jace8 分钟前
A Real-Time Cross Correlator for Neurophysiological Research
人工智能·python·算法
Sheep Shaun23 分钟前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
Dave.B23 分钟前
:vtkBooleanOperationPolyDataFilter 布尔运算全解析
算法·vtk
易晨 微盛·企微管家28 分钟前
2025企业微信AI智能机器人实战指南:3步实现客服自动化
大数据·人工智能·算法
jiaguangqingpanda29 分钟前
Day26-20260122
java·算法·排序算法
踩坑记录34 分钟前
leetcode hot100 160.相交链表 easy 链表双指针
leetcode
secondyoung35 分钟前
队列原理与实现全解析
c语言·数据库·mysql·算法·队列
kuiini36 分钟前
scikit-learn 常用算法与评估方法【Plan 7】
python·算法·scikit-learn
旭意39 分钟前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯