【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

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

相关推荐
passxgx3 分钟前
11.3 迭代法和预条件子
线性代数·算法·矩阵
X在敲AI代码11 分钟前
【无标题】
算法·leetcode·职场和发展
bubiyoushang88812 分钟前
NSGA-II 带精英策略的双目标遗传算法
算法
qq_4308558813 分钟前
线代第二章矩阵第八节逆矩阵、解矩阵方程
线性代数·算法·矩阵
月明长歌24 分钟前
【码道初阶】Leetcode136:只出现一次的数字:异或一把梭 vs HashMap 计数(两种解法完整复盘)
java·数据结构·算法·leetcode·哈希算法
Swift社区30 分钟前
LeetCode 456 - 132 模式
java·算法·leetcode
LYFlied30 分钟前
【每日算法】LeetCode 152. 乘积最大子数组(动态规划)
前端·算法·leetcode·动态规划
圣保罗的大教堂35 分钟前
leetcode 3075. 幸福值最大化的选择方案 中等
leetcode
爱学大树锯43 分钟前
【(格式化字符串)】
算法
wearegogog12344 分钟前
压缩感知和稀疏表示恢复算法中的L1同伦算法
人工智能·算法