尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【leetcode复健-9】239. 滑动窗口最大值-滑动窗口-队列
239. 滑动窗口最大值 - 力扣LeetCode给你一个整数数组nums有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1输入nums [1,3,-1,-3,5,3,6,7], k 3输出[3,3,5,5,6,7]解释滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 731 [3 -1 -3] 5 3 6 731 3 [-1 -3 5] 3 6 751 3 -1 [-3 5 3] 6 751 3 -1 -3 [5 3 6] 761 3 -1 -3 5 [3 6 7]7示例 2输入nums [1], k 1输出[1]提示1 nums.length 105-104 nums[i] 1041 k nums.length题目分析题目会给一个数组和一个窗口大小 k 让我们使用这个窗口在数组中滑动每次滑动找出窗口中的最大值并储存最后返回。这道题的优化思路很明显在于减小窗口内比较的时间复杂度为了最小化比较次数我们可以通过保存最大值和次大值来完成。我们需要知道窗口滑动时可能发生的情况1. 新值进来最大值依旧是最大值最大值需要更新2. 最大值出去次大值成为最大值当我们考虑到找最大值和次大值这一层思路的时候我们也需要想到另一个问题最大值左边的数值是无效的假设该窗口的次大值在最大值左边那就算等到最大值从左侧出去次大值也不会有任何用处因此我们的次大值应该从最大值右侧进行寻找由于遍历时我们可以观察到每一个最大值右侧的数值因此我们不应该也不需要对最大值右侧窗口中进行查找次大值而是每次循环直接比较好。通过这个思想我们可以借助队列完成这个队列中我们只存放三个我们最关心的数值下标存放下标是为了判断最大值是否掉出窗口最大值-次大值-当前数值。代码思路我们维护一个队列 q deque()其中我们需要保证 q[0] 位置一定是最大值q[1] 位置是次大值或者当前值q[2] 是当前值或无。遍历时无论如何将 q 中小于新值 x 的元素下标全部向右出队之后无论如何都将当前值下标加入队列。这一步就同时完成了找最大值和次大值的操作之后判断当前最大值下标 q[1] 是否超出范围是则向左出队一次。这样我们就保证了每次循环都可以直接将 nums[q[0]] 作为最大值存入数组中。正确代码class Solution: def maxSlidingWindow(self, nums: List[int], k: int) - List[int]: from collections import deque q deque() lst [] for i, x in enumerate(nums): while q and x nums[q[-1]]: q.pop() q.append(i) if q[0] i - k 1: q.popleft() if i k - 1 : lst.a
RELATED

相关推荐

具身智能:TVA与世界模型的互补共生机制研究(总结列表)

具身智能:TVA与世界模型的互补共生机制研究(总结列表)

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”或“TVA视觉智能体”)是依托Transformer架构与“因式智能体”理论构建的通用视觉技术框架。它融合深度强化学习(DRL)、卷积神…

📅 2026/9/12 15:01:40
海外版外卖私有化数据归属:部署域隔离与租户边界实践

海外版外卖私有化数据归属:部署域隔离与租户边界实践

欧美市区综合运营商搭建「出海外卖平台」时,技术评审常卡在数据归属:业务库、日志、备份是否在客户可审计的部署域内。下文用部署域模型、租户隔离配置与备份策略片段说明海外版外卖私有化交付如何落地,并与多租户 SaaS 形态做客观对照。示例…

📅 2026/9/8 20:43:50
Git stash 标准用法

Git stash 标准用法

目录 一、基础概念 1.本地仓库 2.工作区 3.核心规则 二、冲突场景与前置条件 冲突产生完整前提 三、git pull 两种执行结果 1.修改文件无重叠(远程未改动你编辑的文件) 2.修改文件重叠(双方改动同一文件) 四、stash 冲突…

📅 2026/10/8 10:56:56
MORE NEWS

更多资讯

📰

Pro/E模型练习100例:建模入门必练的实操路径

简介:《Pro/E模型练习100例》是一套面向Pro/E软件初学者与进阶者的实战训练合集,覆盖旋转、扫描、曲面建模等核心操作,帮助用户从简单几何体到复杂装配逐步提升参数化建模能力。旋转特征适合构建轴类、瓶身等对称实体,扫描特征可设…

📰

红豆地球V1.182 7z包安装部署与问题排查指南

简介:红豆地球V1.182正式版是一款基于GIS技术的地图工具,面向需要全球地理信息查看、查询与分析的个人及企业用户。该版本经过充分测试,稳定可靠,支持地形展示、地点搜索、路线规划及自定义图层等实用功能。资源采用7z格式压缩&am…

📰

电子元器件比价平台:4 个真实比价渠道和方法

元器件比价不能只看单价。同一颗料,不同平台的报价差异可达30%——但低价背后可能藏着翻新料、无检测、无售后的坑。真正靠谱的比价要同时比4样东西:单价、检测能力、账期、售后。比价渠道本身也要选对,用错渠道比出来的价格没有参考价值。一…

📰

手机号归属地离线库:36万号段清洗入库与批量查询实战

简介:全国手机号码段归属地数据库收录了360569条手机号码段记录,以7.48MB的zip压缩包形式打包,共4个文件,包括SQL脚本、CSV数据表和两份txt说明文档。SQL脚本提供建表与插入语句,可在MySQL等数据库内快速创建号码段表并…

📰

外贸独立站如何选SEO服务商?避坑指南

外贸独立站卖家挑选 SEO 服务商,很容易被漂亮的案例截图、营销话术迷惑。判断服务商靠谱与否,不能只看宣传,需要一套可落地的核验标准,从承诺、执行人、案例、技术手法、交付逻辑、资产权限多个维度综合甄别。1. 看承诺&#xff1…

📰

Boost.Asio tcp::iostream:用C++流式编程简化TCP网络通信

1. 核心机制与关键细节拆解1.1 为什么能用“流”来跑网络数据先聊一个很多新手第一次看到boost::asio::ip::tcp::iostream时的疑惑:网络传输明明是基于字节流的收发动作,怎么会和一个操作本地文件的“流”扯上关系?其实这个设计思路的本质&am…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬