当前位置:首页 > 编程笔记 > 正文
已解决

代码随想录算法训练营 单调栈part03

来自网友在路上 149849提问 提问时间:2023-09-24 04:46:29阅读次数: 49

最佳答案 问答题库498位专家为你答疑解惑

一、柱状图中最大的矩形

84. 柱状图中最大的矩形 - 力扣(LeetCode)

单调栈很重要的性质,就是单调栈里的顺序,是从小到大还是从大到小

栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度!!

依旧是分析清楚如下三种情况:

  • 情况一:当前遍历的元素heights[i]大于栈顶元素heights[st.top()]的情况
  • 情况二:当前遍历的元素heights[i]等于栈顶元素heights[st.top()]的情况
  • 情况三:当前遍历的元素heights[i]小于栈顶元素heights[st.top()]的情况
class Solution {public int largestRectangleArea(int[] heights) {int[] newHeight = new int[heights.length + 2];System.arraycopy(heights, 0, newHeight, 1, heights.length);newHeight[heights.length+1] = 0;newHeight[0] = 0;Stack<Integer> stack = new Stack<>();stack.push(0);int res = 0;for (int i = 1; i < newHeight.length; i++) {while (newHeight[i] < newHeight[stack.peek()]) {int mid = stack.pop();int w = i - stack.peek() - 1;int h = newHeight[mid];res = Math.max(res, w * h);}stack.push(i);}return res;}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"代码随想录算法训练营 单调栈part03":http://eshow365.cn/6-12539-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!