当前位置: 首页 > 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.dtcms.com/a/213166.html

相关文章:

  • Java基础知识回顾
  • perl脚本基础
  • MedGemma 简介
  • (每日一道算法题)实现 pow(x, n) 的快速幂解法
  • 【报错】Error attempting to get column ‘created_time‘ from result set.解决方法
  • 嵌入式Linux:子进程执行新程序
  • Selenium 测试框架 - C#
  • [C语言实战]C语言文件操作实战:打造高效日志系统(六)
  • 《Shell脚本实战:打造交互式多级菜单与LAMP/LNMP环境配置指南》
  • GPU基础知识
  • 字符集和字符编码
  • 创建dummy
  • 2025年第八届广西大学生程序设计大赛(正式赛)题解(更新中)
  • 第五十一节:增强现实基础-单应性矩阵计算
  • Java NPE为什么不会导致进程崩溃(CoreDump)
  • ModbusRTU转profibusDP网关与RAC400通讯报文解析
  • 动态规划---路径问题
  • 【分库分表】理论基础
  • 基于python 实现的对一系列给定点进行 Akima 插值
  • 确定性推理 归结
  • Python类与对象:面向对象编程的基础
  • Ollama学习1:安装、命令、API
  • LLM基础-什么是大模型推理(LLM Inferencing)
  • 鸿蒙开发:了解$$运算符
  • STL的map和set(关联式容器深度解析)
  • C语言指针进阶
  • Python类属性与实例属性的覆盖机制:从Vector2d案例看灵活设计
  • 力扣HOT100之回溯:78. 子集
  • 项目难点 与 缓存
  • CodeTop之LRU缓存