网站流量统计模板,个人网站做接口可以么,wordpress底部自豪采用,好看的网站颜色搭配目录
84.柱状图中最大的矩形
前言
思路
算法实现
总结 84.柱状图中最大的矩形 题目链接 文章链接 前言 本题与上一题接雨水的题目有点类似#xff0c;原理上有很多相同的地方#xff0c;依然利用单调栈的方法进行求解。
思路 接雨水是是找每个柱子左右两边第一个大于该…目录
84.柱状图中最大的矩形
前言
思路
算法实现
总结 84.柱状图中最大的矩形 题目链接 文章链接 前言 本题与上一题接雨水的题目有点类似原理上有很多相同的地方依然利用单调栈的方法进行求解。
思路 接雨水是是找每个柱子左右两边第一个大于该柱子高度的柱子而本题是找每个柱子左右两边第一个小于该柱子的柱子。 本题是要找每个柱子左右两边第一个小于该柱子的柱子所以从栈头元素从栈头弹出到栈底的顺序应该是从大到小的顺序只有栈里从大到小的顺序才能保证栈顶元素找到左右两边第一个小于栈顶元素的柱子。 所以本题单调栈的顺序正好与接雨水反过来。 其实就是栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度。
算法实现
class Solution {
public:int largestRectangleArea(vectorint heights) {int result 0;stackint st;heights.insert(heights.begin(), 0);heights.insert(heights.end(), 0);st.push(0);for (int i 1; i heights.size(); i) {if (heights[i] heights[st.top()]) {st.push(i);}else if (heights[i] heights[st.top()]) {st.push(i);}else {while (!st.empty() heights[i] heights[st.top()]) {int mid st.top();st.pop(); if (!st.empty()) {int h heights[mid];int w i - st.top() - 1;result max(result, h * w);}}st.push(i);}}return result;}
};
总结 代码随想录一刷完成