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

单调栈(c++)

干货

先讲讲单调栈

单调栈,就是只有递增或递减的栈。(单调递减栈单调递增栈

给一个数组,让它们进入单调递减栈的规则是:

如果栈为空,直接进入;

如果要进入的数小于等于栈顶的数,则直接进入;

如果要进入的数大于栈顶的数,就删除栈顶的数,重复直到进入的数小于等于栈顶的数,然后进入。

单调递增栈反之。

题目

每日温度


给定一个数 n ,接下来 n 个数,表示每天的温度,返回一个数组 c ,其中 c [ i ] 是指对于第 i 天下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。


示例 1:
输入:

8

73 74 75 71 69 72 76 73

输出

1 1 4 2 1 1 0 0


示例 2:
输入

4

30 40 50 60
输出

 1 1 1 0


示例 3:
输入:

3

30 60 90
输出:

1 1 0

#include <bits/stdc++.h>
using namespace std;
struct aaaaa
{int aa,ii;
};
stack<aaaaa> b;
int a[100010];
int c[100010];
int n;
int main()
{cin>>n;for(int i = 1;i<=n;i++){cin>>a[i];}for(int i = 1;i<=n;i++){aaaaa w;w.aa = a[i];w.ii = i;if(b.empty()==true) b.push(w);else{if(w.aa<=b.top().aa) b.push(w);else{while(true){if(b.empty()==true||w.aa<=b.top().aa) break;c[b.top().ii] = i-b.top().ii;b.pop();}b.push(w);}}}for(int i = 1;i<=n;i++){cout<<c[i]<<" ";}return 0;
}

柱状图中的最大矩形

#include <bits/stdc++.h>
using namespace std;
struct aaaaa
{int aa,ii;
};
stack<aaaaa> b;
int a[100010];
int n;
int ma,cnt;
int main()
{cin>>n;for(int i = 1;i<=n;i++){cin>>a[i];}a[++n] = 0;for(int i = 1;i<=n;i++){aaaaa w;w.aa = a[i];w.ii = i;if(b.empty()==true) b.push(w);else{if(w.aa>=b.top().aa) b.push(w);else{while(true){if(b.empty()==true||w.aa>=b.top().aa) break;ma = max(ma,(i-b.top().ii)*b.top().aa);b.pop();}b.push(w);}}}cout<<ma;return 0;
}

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

相关文章:

  • 布谷鸟过滤器 (Cuckoo Filter)
  • 健康密码:解锁现代养生新法则
  • 嵌入式学习 D27:系统编程--进程
  • 代码中数据类型如何去理解并正确
  • 150MB/3s传输+2K画质:这款远程桌面工具重新定义开源性能
  • 历年华东师范大学保研上机真题
  • Selenium 测试框架 - C#
  • Thread类的基本用法
  • DOM事件的传播机制
  • 贪心算法应用:最大匹配问题详解
  • Ollama学习1:安装、命令、API
  • C++语言入门————高精度计算
  • 基于RK3568处理器实现8路CAN总线PLC解决方案
  • numpy执行无缘无故崩溃 没有报错
  • Autodl训练Faster-RCNN网络--自己的数据集(二)
  • PCB文件从 Allegro 24.1 降级保存为 Allegro 17.4版本格式
  • 李沐《动手学深度学习》| 4.4 模型的选择、过拟合和欠拟合
  • Mujoco 学习系列(六)官方教程 The introductory tutorial teaches MuJoCo basics
  • 53页 @《人工智能生命体 新启点》中國龍 原创连载
  • Learning Transferable Visual Models From Natural Language Supervision
  • 国内云平台RTX 5090租赁及LLM微调推荐
  • 系统编程day04
  • 分库分表深度解析
  • Go语言Map的底层原理
  • springboot 控制层调用业务逻辑层,注入报错,无法自动装配 解决办法
  • [yolov11改进系列]基于yolov11的骨干轻量化更换backbone为shufflenetv2网络python源码+训练源码
  • Win11亮度条和亮度设置消失的解决方法
  • Go并发模式详解:Fan-in与Fan-out的实战应用
  • lec11-并发控制
  • LeetCode --- 450周赛