day60 84.柱状图中最大的矩形

day60 84.柱状图中最大的矩形_第1张图片day60 84.柱状图中最大的矩形_第2张图片

看了题解

暴力是n的平方复杂度。以每个柱子的高度为基准,找到延伸到两边最远的距离,计算距离,计算出所有情况中最大值。

双指针写法优化:

通过找到每个柱子的左边的小于该柱子高度的第一个柱子下标(动态规划,如果左侧第一个柱子高度大于当前柱子高度,就转为求左侧第一个柱子左侧小于左侧第一个柱子高度的柱子下标),右边类似。

单调栈写法:

class Solution {
public:
    int largestRectangleArea(vector& heights) {
        stack   st;
        st.push(0);
        int index=1;
        heights.insert(heights.begin(),0);
        heights.push_back(0);
        int mi=0;
        while(!st.empty()&&indexheights[st.top()]){
                st.push(index);
                index++;
            }
            while(!st.empty()&&index

你可能感兴趣的:(哈希算法,算法)