news 2026/6/9 23:10:08

滑动窗口----滑动窗口最大值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
滑动窗口----滑动窗口最大值

🔥个人主页:Milestone-里程碑

❄️个人专栏: <<力扣hot100>> <<C++>><<Linux>>

<<Git>><<MySQL>>

🌟心向往之行必能至

核心思路:单调队列

我们可以用一个 ** 双端队列(deque)** 来维护一个单调递减的序列,让队列的头部始终是当前窗口的最大值。这样,每个元素最多入队和出队一次,整体时间复杂度可以优化到O(n)

具体步骤如下:

  1. 入队维护单调性:当新元素进入窗口时,从队列尾部开始,把所有小于等于它的元素都弹出,再将它入队。这样能保证队列从队头到队尾是单调递减的。
  2. 出队维护窗口边界:检查队列头部的元素下标是否已经不在当前窗口范围内,如果是,就将其弹出。
  3. 记录结果:当窗口形成(即left >= 0)时,队列头部就是当前窗口的最大值,将其加入结果数组。

完整代码

cpp

class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int n = nums.size(); vector<int> ans(n - k + 1); // 结果数组大小为窗口数量 deque<int> q; // 双端队列,存储元素下标 for (int i = 0; i < n; ++i) { // 1. 维护队列的单调递减性 while (!q.empty() && nums[q.back()] <= nums[i]) { q.pop_back(); } q.push_back(i); // 2. 移除窗口外的元素 int left = i - k + 1; // 当前窗口的左边界 if (q.front() < left) { q.pop_front(); } // 3. 当窗口形成时,记录最大值 if (left >= 0) { ans[left] = nums[q.front()]; } } return ans; } };

示例验证

以题目中的示例 1 为例:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3我们的算法会依次维护队列:

  • 窗口[1,3,-1]→ 队列:[1]→ 最大值3
  • 窗口[3,-1,-3]→ 队列:[1,2]→ 最大值3
  • 窗口[-1,-3,5]→ 队列:[4]→ 最大值5
  • 最终输出结果:[3,3,5,5,6,7],与示例完全一致。

复杂度分析

  • 时间复杂度O(n)。每个元素最多被加入队列一次,弹出队列一次,总操作次数为2n
  • 空间复杂度O(k)。队列中最多存储k个元素。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 3:49:48

M9A智能辅助系统技术白皮书:《重返未来:1999》自动化解决方案

M9A智能辅助系统技术白皮书&#xff1a;《重返未来&#xff1a;1999》自动化解决方案 【免费下载链接】M9A 重返未来&#xff1a;1999 小助手 项目地址: https://gitcode.com/gh_mirrors/m9a/M9A 一、自动化需求与系统架构 核心价值&#xff1a;解析游戏自动化本质矛盾…

作者头像 李华
网站建设 2026/6/7 6:54:41

Lychee Rerank MM快速部署:免conda环境、纯Docker镜像一键拉起重排序服务

Lychee Rerank MM快速部署&#xff1a;免conda环境、纯Docker镜像一键拉起重排序服务 1. 为什么你需要一个真正的多模态重排序服务 你有没有遇到过这样的问题&#xff1a;在做图文搜索时&#xff0c;用传统文本向量检索返回的结果&#xff0c;图片和文字描述明明很相关&#…

作者头像 李华
网站建设 2026/6/5 0:12:21

惊艳效果展示:Nano-Banana生成的工业产品拆解图集

惊艳效果展示&#xff1a;Nano-Banana生成的工业产品拆解图集 1 工业视觉工程的新范式&#xff1a;从“画图”到“拆解” 你有没有见过这样一张图——一台咖啡机被精准地“炸开”&#xff0c;所有内部零件悬浮在空中&#xff0c;彼此间距一致、朝向统一、标注清晰&#xff0c…

作者头像 李华
网站建设 2026/6/5 0:44:56

Anything to RealCharacters 2.5D转真人引擎:数字藏品平台内容生成基础设施

Anything to RealCharacters 2.5D转真人引擎&#xff1a;数字藏品平台内容生成基础设施 1. 项目概述 1.1 核心功能定位 Anything to RealCharacters 2.5D转真人引擎是一款专为数字藏品平台设计的图像转换工具&#xff0c;能够将2.5D、卡通和二次元风格的图像高质量转换为写实…

作者头像 李华
网站建设 2026/6/6 13:41:16

Qwen2.5-VL-7B-Instruct快速上手指南:上传图片+输入指令=3步完成物体定位

Qwen2.5-VL-7B-Instruct快速上手指南&#xff1a;上传图片输入指令3步完成物体定位 1. 工具简介 Qwen2.5-VL-7B-Instruct是一款专为RTX 4090显卡优化的多模态视觉交互工具&#xff0c;基于阿里通义千问官方模型开发。它能够理解图片内容并回答相关问题&#xff0c;支持OCR提取…

作者头像 李华
网站建设 2026/6/5 5:02:11

网盘工具高效解决方案:突破下载限制的本地化解析技术

网盘工具高效解决方案&#xff1a;突破下载限制的本地化解析技术 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 在网络文件传输场景中&#xff0c;用户常面临网盘服务的下载速度限制、验证流程繁琐等问…

作者头像 李华