栈和队列——单调队列、单调栈

讲解博客链接——

一、单调栈
1、什么是单调栈?

单调栈是指一个栈内部元素具有严格单调性(单调递增, 单调递减)的一种数据结构。

2、单调栈的两个性质:
  1. 满足从栈顶到栈底具有严格的单调性
  2. 满足后进先出的特征, 越靠近栈底的元素越早的进栈。
3、元素进栈的过程:

对于当前进栈元素x
①如果x < 栈顶元素, x 进栈。
②否则 栈顶元素出栈, 直到 到 栈顶元素 < x(且栈不为空); x进栈。

举个例子:
1, 7, 3, 5;
开始1, 进入栈, 栈内元素(从栈顶开始){1}
到7, 7> 栈顶元素1.所以1出栈 { },此时 栈为空, 所以7可以入栈, {7}
然后3 < 7 , 3入栈 {7,3}
然后5> 栈顶3 所以,3出栈    {7},  5 < 栈顶元素7 所以 5入栈{5, 7} 
4、模拟实现
int x;
stack<int>s;
forint i = 1;i <= N;i++{
	if(x < s.top)s.push(x);
	else 
	{
		while(!s.empty()&&x >= s.top())
		{
			s.pop();
		}
		s.push(x);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>