题意
求柱形图中的最大矩形面积。
题解
法一: 求每个点左边连续比它大的最左边的下标,保存在 $l[]$ 数组里,求每个点右边连续比它大的最右边的下标,保存在 $r[]$ 数组里
法二: 维护一个单调栈, 如果 $h$ 大于栈顶元素,则入栈, 否则,将栈内元素出栈,直到满足上面的条件。出栈时,我们要将出栈元素对之后问题的影响全部考虑进行处理,才能保证做法的正确性。
代码
1 |
|
求柱形图中的最大矩形面积。
法一: 求每个点左边连续比它大的最左边的下标,保存在 $l[]$ 数组里,求每个点右边连续比它大的最右边的下标,保存在 $r[]$ 数组里
法二: 维护一个单调栈, 如果 $h$ 大于栈顶元素,则入栈, 否则,将栈内元素出栈,直到满足上面的条件。出栈时,我们要将出栈元素对之后问题的影响全部考虑进行处理,才能保证做法的正确性。
1 | #include <algorithm> |