LeetCode 题解:84. 柱状图中最大的矩形,使用栈,JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/
解题思路:
参考了官方题解中的方法二:单调栈 + 常数优化。
将元素入栈,当遇到待入栈元素小于栈顶时,就将栈中元素依次弹出,直到栈顶比入栈元素小为止。
通过第一步的操作,就保证了栈是有小到大排序。
当入栈元素比栈顶小时,入栈元素即为右边界,栈顶为高,栈顶的下一个元素为左边界,即可计算面积。
当所有元素都完成入栈操作后,如果栈中还有元素,则需要以此将栈中元素依次弹出计算面积。
在清空栈之前,栈顶为heights的最后一个元素,且栈是有小到大排序,因此栈中元素的右边界都为heights.length
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/9f1994493f748930577a3ddba】。文章转载请联系作者。
评论