LeetCode84.柱状图中最大矩形

cpp 复制代码
class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        int size = heights.size();
        int n = heights.size();
        vector<int> left(size, -1);
        stack<int> st;
        st.push(0);
        //找到每个柱子左侧小于它高度的最近元素的下标
        for(int i = 1; i < size; i++){
            while(!st.empty() && heights[st.top()] >= heights[i])
                st.pop();
            if(!st.empty())
                left[i] = st.top();
            st.push(i);
        }
        vector<int> right(size, n);
        stack<int> st2;
        st2.push(n - 1);
        //找到每个柱子左侧小于它高度的最近元素的下标
        for(int i = n - 2; i >= 0; i--){
            while(!st2.empty() && heights[st2.top()] >= heights[i])
                st2.pop();
            if(!st2.empty())
                right[i] = st2.top();
            st2.push(i);
        }
        int res = 0;
        for(int i = 0; i < size; i++){
            res = max(res, heights[i] * (right[i] - left[i] - 1));
        }
        return res;
    }
};
相关推荐
剑挑星河月4 分钟前
94.二叉树的中序遍历
java·算法·leetcode
拳里剑气5 分钟前
C++算法:队列与BFS
c++·算法·bfs·宽度优先·队列
Ivanqhz26 分钟前
注意力机制
线性代数·算法·矩阵·哈希算法·dnn
z小猫不吃鱼30 分钟前
02 Optimal Brain Damage 详解:二阶信息剪枝的起点
算法·机器学习·剪枝
Keven_1131 分钟前
算法札记:如何判断一个DP能否单调队列优化
算法
m0_6265352040 分钟前
近似attention
人工智能·算法·机器学习
atunet1 小时前
关于算法优化的渐进式重构与代码级实践的技术7
算法
霖大侠2 小时前
Decoupled and Reusable Adaptation for Efficient Cross-Modal Transfer
人工智能·深度学习·算法·机器学习·transformer
OOJO2 小时前
哈希表实现
数据结构·哈希算法·散列表