Leetcode刷题看到的一些概念——单调栈

简介

栈内的元素从栈顶到栈底满足单调递增或者单调递减

应用场景

寻找下一个更大(更小)的数字

例题

1.每日温度
根据每日气温列表,输出想要观测到更高温度至少要等待的天数,如果不存在更高的天数,该位置取0
例如:temperatyres=[73,74,75,71,69,72,76,73]
输出=[1,1,4,2,1,1,0,0]

维护一个存储下标的单调栈,如果栈不为空,从栈底到栈顶的下标对应表中温度的值依次递减,即还没有找到温度更高的目标

class Solution {
public:    
	vector dailyTemperatures(vector& T) {
	vector outWaitDaily(T.size());
	stack SaveDays;
	int dy;
	for(int i=0;i

优点

可以及时排除不可能的选项

复杂度

时间复杂度:O(n),n是温度列表的长度,正向遍历一遍温度列表
空间复杂度:O(n),n是温度列表的长度,需要维护一个单调栈存储其下标

你可能感兴趣的:(C++刷题)