C++ 高级数据结构————[ 单调栈 ]

本文介绍了单调栈这一高级数据结构,它要求栈内的元素保持单调递增或递减。通过举例和代码解释,阐述了单调递增栈和单调递减栈的工作原理,以及如何利用它们在O(n)的时间复杂度内解决找到某个数左边第一个小于它的数或右边第一个大于它的数的问题。并提供了一个编程模板题作为实践示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每周一篇的算法文章来了

今天讲解的是高级数据结构中的——单调栈

单调栈,顾名思义,就是升级版的栈()

先回顾一下栈把

,是一种线性表,它的特点是只能从一边进出,并且先进后出,后进先出。就想枪的弹夹一样。

而单调栈,跟他有一点不同

单调栈,每时每刻都要保持栈中呈现单调递增或单调递减 

但是,有一个问题:

还是举个栗子

如果把6,7,12,3,1,8依次入栈,那么就会呈现这种样子

 

 怎么看,他都不是单调递增或递减

那我们就要引入单调栈的方法了

一.单调递增栈

单调递增栈中的单调递增,指的是依次出栈的数据呈单调递增

就比如

 

在出栈时,顺序为1,2,3,4,5,6

回到刚才的栗子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值