当前位置: 首页 > java >正文

栈应用:辅助站(c++)

干货

今天讲讲最大辅助栈最小辅助栈

主栈进入元素的时候

最大辅助栈:保证新元素大于等于(辅助栈)顶的时候,再进入辅助栈这样就能保证最大辅助栈的栈顶元素 是主栈中的最大值
主栈出栈的时候

最大辅助栈:主栈出栈元素如果等于(辅助栈)的栈顶元素,再出辅助栈这样就能保证最大辅助栈的栈顶元素 是主栈中的最大值

最小辅助栈反之

接下来是练习

题目

滑动窗口

题目描述

给定一个大小为n的数组。

有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。

您只能在窗口中看到k个数字。

每次滑动窗口向右移动一个位置。

以下是一个例子:

该数组为[1 3 -1 -3 5 3 6 7],k为3。

窗口位置最小值最大值
[1 3 -1] -3 5 3 6 7-13
1 [3 -1 -3] 5 3 6 7-33
1 3 [-1 -3 5] 3 6 7-35
1 3 -1 [-3 5 3] 6 7-35
1 3 -1 -3 [5 3 6] 736
1 3 -1 -3 5 [3 6 7]37

您的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。

输入格式

输入包含两行。

第一行包含两个整数n和k,分别代表数组长度和滑动窗口的长度。

第二行有n个整数,代表数组的具体数值。

同行数据之间用空格隔开。

输出格式

输出包含两个。

第一行输出,从左至右,每个位置滑动窗口中的最小值。

第二行输出,从左至右,每个位置滑动窗口中的最大值。

样例

样例输入
8 3

1 3 -1 -3 5 3 6 7

样例输出
-1 -3 -3 -3 3 3

3 3 5 5 6 7

#include <bits/stdc++.h>#define l longusing namespace std;int n,k;
l l a[10000010];
stack<l l> ma;
stack<l l> mi;
stack<l l> aaaaa;int main()
{cin>>n>>k;for(int i = 0;i<n;i++){cin>>a[i];}for(int j = 0;j<=n-k;j++){for(int i = j;i<j+k;i++){aaaaa.push(a[i]);if(mi.empty()==true) mi.push(aaaaa.top());else if(mi.top()>=aaaaa.top()) mi.push(aaaaa.top());}cout<<mi.top()<<" ";while(true){if(aaaaa.empty()==true) break;if(aaaaa.top()==mi.top()) mi.pop();aaaaa.pop();}}cout<<endl;for(int j = 0;j<=n-k;j++){for(int i = j;i<j+k;i++){aaaaa.push(a[i]);if(ma.empty()==true) ma.push(aaaaa.top());else if(ma.top()<=aaaaa.top()) ma.push(aaaaa.top());}cout<<ma.top()<<" ";while(true){if(aaaaa.empty()==true) break;if(aaaaa.top()==ma.top()) ma.pop();aaaaa.pop();}}return 0;
}

http://www.xdnf.cn/news/5231.html

相关文章:

  • C#异步Task,await,async和Unity同步协程
  • 玩转Docker | 使用Docker部署Note Mark笔记应用程序
  • [架构之美]Spring Boot集成MyBatis-Plus高效开发(十七)
  • 求两个正整数的最大公约数和最小公倍数:方法1:辗转相除法
  • 01 | 大模型微调 | 从0学习到实战微调 | AI发展与模型技术介绍
  • STM32实现九轴IMU的卡尔曼滤波
  • 如何在postman使用时间戳
  • Windows下的临界写法
  • 回文数(9)
  • 气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解
  • C++GO语言微服务之图片、短信验证码生成及存储
  • 【沉浸式求职学习day35】【Tomcat安装、配置】【Http简述】
  • Linux指令入门:DevOps与SRE视角
  • SDC命令详解:使用all_outputs命令进行查询
  • 轻松制作高质量视频,实时生成神器LTX-Video重磅登场!
  • 睿思量化小程序
  • LeetCode 88. 合并两个有序数组 | Python 最简写法 + 实战注释
  • Java面向对象
  • bcm5482 phy 场景总结
  • 技嘉主板BIOS升级
  • 树 Part 4
  • D. Apple Tree Traversing 【Codeforces Round 1023 (Div. 2)】
  • NX949NX952美光科技闪存NX961NX964
  • 短剧 CPS 分销系统开发搭建,开启流量变现新征程
  • 数字签名与证书
  • 北斗终端设备应用
  • 【含文档+源码】基于SpringBoot的新能源充电桩管理系统的设计与实现
  • ODA服务器计算节点本地硬盘状态异常的处理
  • 【金仓数据库征文】国产数据库KingbaseES安装与使用详解
  • 202535| Kafka架构与重要概念+幂等性+事务