首页 > 编程语言 >【算法训练营day60】LeetCode84. 柱状图中的最大的矩形

【算法训练营day60】LeetCode84. 柱状图中的最大的矩形

时间:2023-02-22 23:13:20浏览次数:52  
标签:柱体 矩形 int LeetCode84 st day60 柱状图 result heights

LeetCode84. 柱状图中的最大的矩形

题目链接:84. 柱状图中的最大的矩形

独上高楼,望尽天涯路

感觉和接雨水很像。

慕然回首,灯火阑珊处

思路如下。

我们可以遍历每根柱子,以当前柱子 i 的高度作为矩形的高,那么矩形的宽度边界即为向左找到第一个高度小于当前柱体 i 的柱体,向右找到第一个高度小于当前柱体 i 的柱体,其中宽度不包含左右第一个高度小于当前柱体i的柱体)

代码实现上唯一和接雨水不同的是,因为求的是第一个小于,所以需要在heights数组首尾插入元素0,防止遇到递增或者递减的heights数组,导致无法计算result。

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        stack<int> st;
        heights.insert(heights.begin(), 0); // 数组头部加入元素0
        heights.push_back(0); // 数组尾部加入元素0
        st.push(0);
        int result = 0;
        for (int i = 1; i < heights.size(); i++) {
            while (heights[i] < heights[st.top()]) { // 因为heights首插入了0,所以不需要判断单调栈是否为空
                int mid = st.top();
                st.pop();
                int w = i - st.top() - 1;
                int h = heights[mid];
                result = max(result, w * h);
            }
            st.push(i);
        }
        return result;
    }
};

标签:柱体,矩形,int,LeetCode84,st,day60,柱状图,result,heights
From: https://www.cnblogs.com/BarcelonaTong/p/17146341.html

相关文章

  • matplotlib 柱状图
    importmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpif__name__=="__main__":#0、修改支持中文的字体plt.rcParams["font.sans-serif......
  • 柱状图
    <!--柱状图--><template><divclass="chartBox"><!--echart图标--><divid="barChart"ref="barChart"></div></div></template><script>//引入基本模板//co......
  • 横向柱状图图
    <!--横向柱状图图--><template><divclass="chartBox"><!--echart图标--><divid="crosswiseBarChart"ref="crosswiseBarChart"></div></div></template><scr......
  • 分组柱状图
    <!--分组柱状图--><template><divclass="chartBox"><!--echart图标--><divid="histogram"ref="histogram"></div></div></template><script>//引入基本模......
  • echarts动态排序柱状图
    链接:https://juejin.cn/post/7149089840850534407<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Comp......
  • vue+echarts实现疫情柱状图(全国确诊省市TOP10)
    效果:代码:<template><div><divid="right1"style="height:800px;width:100%"></div></div></template><script>exportdefault{data(){return{......
  • Python修改柱状图边缘柱子与图边界的距离
      本文介绍基于Python中matplotlib.pyplot模块,修改柱状图、条形图最两侧的柱子与图像边缘之间距离的方法。  最近,绘制了一个水平的柱状图,但是发现图的上、下边距(不是......
  • 09Bar柱状图
    importmatplotlib.pyplotaspltimportnumpyasnpn=12X=np.arange(n)Y1=(1-X/float(n))*np.random.uniform(0.5,1.0,n)Y2=(1-X/float(n))*np.random.uniform(0.5,......
  • echarts柱状图柱体圆角
    init_chuangkou_top_list_chart:function(ckmc_list,value_list){letmyChart=this.$echarts.init(document.getElementById('chuangkou_top_list'));......
  • Echarts柱状图属性设置大全,怎么不要等高线
    https://blog.csdn.net/sleepwalker_1992/article/details/126467654......