Leetcod 剑指offer 59 滑动区间最大值

简介: Leetcod 剑指offer 59 滑动区间最大值

题目

给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。


示例:


输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3


输出: [3,3,5,5,6,7]


解释:


滑动窗口的位置 最大值


[1 3 -1] -3 5 3 6 7 3

1 [3 -1 -3] 5 3 6 7 3

1 3 [-1 -3 5] 3 6 7 5

1 3 -1 [-3 5 3] 6 7 5

1 3 -1 -3 [5 3 6] 7 6

1 3 -1 -3 5 [3 6 7] 7


思路


维护一个单调递减队列,使得每次在一个新的区间中向结果数组添加元素都可以按照O(1)时间复杂度获取元素。单调队列保存元素坐标


1.队首元素为最大值,每当i 循环到一个新的元素时,判断其与单调队列中的元素的大小关系,如果比队尾元素小就直接加入队列,如果比队尾元素大,就不断删除队尾元素,然后找到合适的位置


2.将i位置元素append到单调队列中


3.不断循环判断队首元素坐标是否在滑动区间范围之内,如果不在就将队首元素移除


4.只要检测 i 元素的滑动区间大小比要求的大, 就将单调队列中的最大值添加到result 数组中

class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        deque, res = [], []
        for i in range(len(nums)):
            while deque and nums[deque[-1]] <= nums[i]:
                deque.pop()
            deque.append(i)
            while deque[0] < (i-k+1):
                deque.pop(0)
            if i >= k-1:
                res.append(nums[deque[0]])
        return res

时间复杂度 O(n)


空间复杂度O(K) 单调队列最多需要维护 k大小的滑动窗口中的数量

相关文章
|
存储 算法 iOS开发
【狂热算法篇】并查集:探秘图论中的 “连通神器”,解锁动态连通性的神秘力量(通俗易懂版)
【狂热算法篇】并查集:探秘图论中的 “连通神器”,解锁动态连通性的神秘力量(通俗易懂版)
|
机器学习/深度学习 网络架构
用R语言中的神经网络预测时间序列:多层感知器和极限学习机
用R语言中的神经网络预测时间序列:多层感知器和极限学习机
|
机器学习/深度学习
机器学习的数学基础 - 信息论
机器学习的数学基础 - 信息论
机器学习的数学基础 - 信息论
|
分布式计算 大数据 Spark
【Spark Summit East 2017】商品集群上的时间演化图处理
本讲义出自Anand Iyer在Spark Summit East 2017上的演讲,主要介绍了构建于通用数据流框架上的时间演化图处理系统Tegra,并介绍了间隔拍摄(Timelapse)来呈现两个计算模型:用于对于进化图的多个快照进行计算的时序分析模型,以及能够有效更新结果的广义增量计算模型。
1919 0
|
10天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
488 126
|
20天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
5天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
14天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。