leetcode84柱状图中最大的矩形

题解: - 力扣(LeetCode)

java 复制代码
class Solution {
    public int largestRectangleArea(int[] heights) {
        Stack<Integer> stack = new Stack<>();
        int maxArea = Integer.MIN_VALUE;
        for(int i = 0;i < heights.length;i++){
            int curHeight = heights[i];
            while(!stack.empty() && curHeight < heights[stack.peek()]){
                int index = stack.pop();
                int left = (stack.empty()) ? 0 : stack.peek()+1;
                int tempArea = heights[index] * (i - left);
                maxArea = Math.max(maxArea,tempArea);
            }
            stack.push(i);     
        }
        while(!stack.empty()){
                int index = stack.pop();
                int left = (stack.empty()) ? 0 : stack.peek()+1;
                int tempArea = heights[index] * (heights.length - left);
                maxArea = Math.max(maxArea,tempArea);
            }
        return maxArea;
    }
}
相关推荐
甄心爱学习9 分钟前
【最优化】1-6章习题
人工智能·算法
PD我是你的真爱粉9 分钟前
向量数据库原理与检索算法入门:ANN、HNSW、LSH、PQ 与相似度计算
数据库·人工智能·算法
汀、人工智能11 分钟前
[特殊字符] 第72课:杨辉三角
数据结构·算法·数据库架构·图论·bfs·杨辉三角
_深海凉_21 分钟前
LeetCode热题100- 字母异位词分组
leetcode
洛水水23 分钟前
【力扣100题】14.两数相加
c++·算法·leetcode
我不是小upper24 分钟前
相关≠因果!机器学习中皮尔逊相关检验的完整流程
人工智能·算法·机器学习
云烟成雨TD26 分钟前
Spring AI 1.x 系列【28】基于内存和 MySQL 的多轮对话实现案例
java·人工智能·spring
float_com26 分钟前
LeetCode80. 删除有序数组中的重复项 II
leetcode
pwn蒸鱼27 分钟前
leetcode:21. 合并两个有序链表
算法·leetcode·链表
Lyyaoo.28 分钟前
【JAVA基础面经】String、StringBuffer、StringBuilder
java·开发语言