力扣-栈与队列-239 滑动窗口的最大值

ops/2025/2/11 9:50:30/

双指针思路

每移动一次,可以比较上一次窗口的最大值和被移除的值,如果被移除的值小于最大值,则说明最大值仍在新的区间,但是最后超时了

双指针超时代码

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;if(k == 1){return nums;}int maxNum = nums[0];for(int i = 0; i < k; i++){if(maxNum < nums[i]) maxNum = nums[i];}res.push_back(maxNum);int slow = 1, fast = k;for(fast; fast < nums.size(); fast++, slow++){if(res[slow - 1] > nums[slow - 1]){res.push_back(max(res[slow-1], nums[fast]));}else{int tmp = nums[slow];for(int i = slow; i <= fast; i++){if(nums[i] > tmp) tmp = nums[i];}res.push_back(tmp);}}return res;}
};

不超时思路

单调队列中,维护maxiIndex使得,在maxIndex之前的小于等于的元素没必要维护,只有maxIndex不在窗口时才遍历一次,并且也是将比maxIndex小的删掉,并且每增加一个元素就和maxIndex比较,一旦大于就把前面元素全部排除

class Solution {
public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {vector<int> res;if(k == 1){return nums;}int maxNum = nums[0], maxIndex = 0;for(int i = 0; i < k; i++){if(maxNum <= nums[i]){maxNum = nums[i];maxIndex = i;}}res.push_back(maxNum);int slow = 1, fast = k;for(fast; fast < nums.size(); fast++, slow++){if(nums[fast] > nums[maxIndex]){maxIndex = fast;}if(maxIndex < slow){int tmp = slow;for(int i = slow; i <= fast; i++){if(nums[i] >= nums[tmp]){tmp = i;}}maxIndex = tmp;}res.push_back(nums[maxIndex]);}return res;}
};


http://www.ppmy.cn/ops/157494.html

相关文章

IntelliJ IDEA使用经验(十三):使用Git克隆github的开源项目

文章目录 问题背景办法1、设置git代理&#xff1b;2、再次克隆项目&#xff1b;3、再次按常规方式进行git克隆即可。 问题背景 由于github在国外&#xff0c;很多时候我们在使用idea克隆开源项目的时候&#xff0c;没办法检出&#xff0c;提示 连接重置。 办法 1、设置git代…

Docker安装+镜像+错误解决+win11【小记】

参考【Docker】掌握 Docker魔法&#xff1a;Windows 11 平台上的完美容器部署终极指南_win11 docker-CSDN博客 目录 1.安装 1.1进入官网 1.2Hyper-V 1.3安装docker软件包 1.4测试 2.镜像 2.1方法一&#xff1a;配置文件换源 2.2方法二&#xff1a;也起到检验作用 2.3…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件&#xff0c;用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容&#xff0c;并通过滚动机制来查看全部内容。这对于显示大量信息&#xff08;如长列表、长篇文本或大型图像等&…

什么是DDOS网络攻击?

什么是DDoS攻击&#xff1f; DDoS&#xff08;Distributed Denial of Service&#xff0c;分布式拒绝服务&#xff09;攻击是一种网络攻击手段&#xff0c;通过大量合法或恶意请求占用目标服务器、网络或资源&#xff0c;使其无法正常为用户提供服务。 DDoS攻击原理 攻击者利…

Java的多态:使用内存图理解运行时多态

一、什么是多态 多态指多种形态&#xff0c;多态允许同一个方法在不同对象中表现出不同的行为。换句话说&#xff0c;在多态的情况下&#xff0c;相同的接口可以指向不同的实现。 父类的引用指向子类的对象&#xff0c;子类的对象也可以向上转型到父类的类型接收&#xff0c;…

MySQL实战宝典:从调优到高可用架构设计全解析

MySQL作为全球最流行的开源关系数据库&#xff0c;支撑着互联网70%以上的在线业务。本文将揭秘淘宝双11每秒百万级TPS背后的数据库设计哲学&#xff0c;手把手带您构建高性能、高可靠的MySQL体系。 &#x1f680; 一、MySQL架构核心揭秘 存储引擎双雄对决&#xff1a; sql 复…

openGauss 3.0 数据库在线实训课程6:学习用户一次只能连接到一个数据库,没法访问其他数据库的对象

前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见&#xff1a;openGauss 3.0.0数据库在线实训课程 学习目标 学习openGauss体系结构&#xff0c;通过实验&#xff0c;了解用户一次只能连接到一个数据库&#xff0c;没法访问其他数据库的对象。 课程作…

北京青蓝智慧科技: 2025年ITSS IT服务项目经理的转型与挑战

2025年&#xff0c;随着信息技术的持续快速发展&#xff0c;IT服务管理&#xff08;ITSS&#xff09;在企业运营中的关键作用将进一步凸显。作为一位资深IT行业分析师&#xff0c;我预测2025年的IT服务经理将面临诸多挑战&#xff0c;同时也将迎来新的发展机遇。 人工智能&…