单调栈
概念:单调递增或单调减的栈,跟单调队列差不多,但是只用到它的一端;
用处:
1,在线性数据中可以在O(n)的时间复杂度内记录数据的最大值最小值及前缀后缀中的最值(nlog(n));
2,在线性数据中可以在O(n)的时间复杂度内记录下每一个位置中比当前位置大(小)的最近位置;
注意:
1,通常在单调栈中存的是data【】的下标而不是其中的值,因为通过下标我们可以找到值而通过值却找不到下标;
2,单调栈通常与区间最值问题联系,在考虑用线段树或树状数组前先考虑能否用单调栈(队列);
下面我们来看几个例题:
1,
分析:这到题很明显用单调栈,因为我们只考虑一个方向