【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

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

相关推荐
阿维的博客日记13 小时前
保姆级教程介绍分词算法BPE
人工智能·算法·分词算法·bpe
Tongzhi202613 小时前
通芝科技无感考勤一体机:软硬一体,开箱即用
数据结构·数据库·科技·算法·均值算法·数据库开发
地平线开发者13 小时前
BEVdet模型解析
算法·自动驾驶
tudousisi22214 小时前
P2758 编辑距离 题解复盘
算法
李可以量化14 小时前
Tornado 从了解到精通(四)上:实战搭建 Web 应用与核心组件详解
算法
linux-hzh14 小时前
百日算法修炼 · Day 09
数据结构·算法·排序算法
DFT计算杂谈14 小时前
Janus单层Cr2SSe中的应变可调多压电效应与谷电子学
人工智能·算法·机器学习
今天AI了吗14 小时前
从 LLM 到 Agent Skill:把 AI 底层概念串起来
数据库·人工智能·sql·深度学习·神经网络·算法·机器学习
hanlin0315 小时前
动态规划专练:力扣第1035、392题
算法·leetcode·动态规划
淡海水15 小时前
C#与常用数据结构源码剖析-全篇导览
开发语言·数据结构·unity·面试·职场和发展·c#