原题链接 参考直方图最大矩形那道题,边界点是到权值比它小的天数为止,所以单调栈是单调递增栈,这道题我们需要的是while循环后的边界点,如果在while循环里取第一个点反而会导致答案错误,因为存在这种情况: 7 5 3 如果取while循环里第一个点就会少算7 #include <iostream> ...
分类:
其他好文 时间:
2020-12-29 11:37:41
阅读次数:
0
##利用单调栈,可以找到从左/右遍历第一个比它小/大的元素的位置. #####假设有一个单调栈S和一个数组a[5]; #####有一个记录数组L[5],序号由1-5,表示a[i]向左遍历第一个比a[i]小的数的下标; a[5]:3 5 7 4 6 当a[1]=3压入栈中,是空栈,L[1]=0; 当a ...
分类:
编程语言 时间:
2020-06-14 16:56:48
阅读次数:
53
1、分类 单调递增栈:数据出栈的序列为单调递增序列 单调第减栈:数据出栈的序列为单调递减序列 2、操作(以单调递增栈为例) 如果新元素比栈顶元素大, 入栈 如果新元素比栈顶元素小,栈顶元素出栈,直到栈顶元素小于该元素,入栈该元素 3、示例 例如,给定一个序列 [ 1, 3, 5, 2, 4 ],当1 ...
分类:
其他好文 时间:
2020-05-30 21:55:30
阅读次数:
66
题目: 解答: 单调栈 正向遍历,单调递增栈,找出自始至终没有出栈的最大索引 l 反向遍历,单调递减栈,找出自始至终没有出栈的最小索引 r 中间就是需要排序的最小子数组 1 class Solution { 2 public: 3 int findUnsortedSubarray(vector<in ...
分类:
编程语言 时间:
2020-05-05 17:49:42
阅读次数:
56
单调栈典型例题 https://leetcode-cn.com/problems/maximal-rectangle/ 思路:构造直方图的高度的单调递增栈结构,栈中存储位置信息,获得当前位置能够向左和向右扩展最大距离再乘以当前高度可得矩形面积,获得最大矩形面积即可。对于能够扩展的距离是当前入栈位置p ...
分类:
其他好文 时间:
2020-04-24 09:17:20
阅读次数:
80
Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version) 题意: 你是一名建筑工程师,现给出 n 幢建筑的预计建设高度,你想建成峰状,如: 1 2 3 2 1 → 1 2 3 2 1 1 2 3 1 2 → 1 2 3 1 1 8 1 ...
分类:
其他好文 时间:
2020-03-19 21:25:05
阅读次数:
52
单调递增栈:栈顶到栈底为递增,数据出栈的序列为单调递增序列 单调递减栈:栈顶到栈底为递减,数据出栈的序列为单调递减序列 栈内可存储下标,也可存储元素 $code :$ ...
分类:
其他好文 时间:
2020-01-22 22:10:28
阅读次数:
70
在查找刷题攻略的时候,也遇到了一些比较经典、有趣的题目,记录在这里,不断更新。难度保持在LeetCode中的Medium级别左右。 1.求一个数组中右边第一个比他大的数 单调栈专用于解决此类问题。其中有一个trick是,查找比他大的数用单调递减栈,查找比他小的数用单调递增栈。 2.牛的视野 变形的单 ...
分类:
其他好文 时间:
2019-10-21 09:47:53
阅读次数:
96
自己的代码不贴了,像hamburger 一、正向递增栈+hashmap 二、反向递增栈+hashmap ...
分类:
其他好文 时间:
2019-09-13 21:52:06
阅读次数:
106
单调栈 特点 栈内的元素单调递增或者单调递减,可以在$O(n)$的时间内求出数列中所有数的左边或右边第一个比其大或小的元素,总时间复杂度为$O(n)$ 例子 单调栈中一般存索引 一个单调递增栈 代表栈中a[1]~a[9]的元素大于a[10]的元素,索引为a[11]~a[19]的元素大于a[20]的元 ...
分类:
其他好文 时间:
2019-05-27 23:31:21
阅读次数:
144