【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

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

相关推荐
北极有牛几秒前
cuda算子--矩阵转置
人工智能·算法
程序猫.18 分钟前
算法刷题笔记:模拟题从入门到实战(含 LeetCode 例题与习题)
java·数据结构·算法
liliangcsdn23 分钟前
zpos因果对冲的分析和示例
算法
Shan120537 分钟前
经典算法题学习:跳跃游戏IV(一)
算法
AIGCmagic社区1 小时前
灵巧手VLA真机均分71%,北大DeCAL用接触门控接入触觉
人工智能·算法·aigc·ai多模态
迷途之人不知返1 小时前
算法系列4:前缀和
算法
吠品1 小时前
Python 写入 Excel 的两种主流方案实际用法总结
c语言·开发语言·算法
Zane19941 小时前
归并排序和堆排序都能保证O(nlogn),为什么谁也没法把稳定和原地两个优点占全
算法·排序算法
天天喝旺仔1 小时前
Go 泛型实战:从类型参数、约束到可复用泛型容器与函数
数据结构·算法·容器·go
可爱的小小小狼1 小时前
【无标题】
java·算法