【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

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

相关推荐
liliangcsdn12 小时前
skewness收益偏度取负因子背后逻辑的探索
人工智能·算法·机器学习
鹿角片ljp13 小时前
LeetCode 300. 最长递增子序列|从 DP O (n²) 到贪心 + 二分 O (n log n)
算法·动态规划
叠层归一研究院13 小时前
缝合维度:时空3+1结构的拓扑起源
人工智能·算法·机器学习·agi
YXXY31313 小时前
FloodFill算法
算法
OPEN-F13 小时前
C++入门教程:数组、字符串与指针入门
数据结构·c++·算法
林森lsjs13 小时前
零基础吃透二叉树:定义、遍历与高频算法 —数据结构柒
java·开发语言·数据结构·算法·二叉树
船厂电气自动化ai大模型13 小时前
AI大模型与数学·第56课 快速傅里叶变换FFT:DFT高效优化算法,图像、音频、扩散模型工程加速核心工具
数据结构·人工智能·深度学习·算法·机器学习
203号居民13 小时前
【无标题】LeetCode hot 100 —54. 螺旋矩阵
算法
烤羊腿的程序员13 小时前
前端面试知识点大全(带答案)
前端·面试·职场和发展
ai产品老杨13 小时前
越界检测算法接入 AI 视频分析平台的流程与误报优化指南
人工智能·算法·音视频