单调栈的经典例题,虽然单调栈的题目已经做过一些了,但是还是在这卡了一会。
题意
求最大矩形的面积。
思路
用一个单调栈存储一个单调递增的序列,用来查看每个矩形向左延伸的左边界。
单调栈中是一个单调的序列,所以我们在向左找的时候,就一直找就行。
注意的是,单调栈中存的是下标,不是值。
我们比较栈顶元素和当前元素的大小,直到遇到一个栈顶的元素小于当前元素,那么栈顶元素 +1就代表了左边界的位置。
1 |
|
1 |
|
云腾致雨,露结为霜
单调栈的经典例题,虽然单调栈的题目已经做过一些了,但是还是在这卡了一会。
求最大矩形的面积。
用一个单调栈存储一个单调递增的序列,用来查看每个矩形向左延伸的左边界。
单调栈中是一个单调的序列,所以我们在向左找的时候,就一直找就行。
注意的是,单调栈中存的是下标,不是值。
我们比较栈顶元素和当前元素的大小,直到遇到一个栈顶的元素小于当前元素,那么栈顶元素 +1就代表了左边界的位置。
1 | #include <iostream> |
1 | #include <iostream> |