Java | Leetcode Java题解之第84题柱状图中最大的矩形

题目:

题解:

java 复制代码
class Solution {
    public int largestRectangleArea(int[] heights) {
        int n = heights.length;
        int[] left = new int[n];
        int[] right = new int[n];
        Arrays.fill(right, n);
        
        Deque<Integer> mono_stack = new ArrayDeque<Integer>();
        for (int i = 0; i < n; ++i) {
            while (!mono_stack.isEmpty() && heights[mono_stack.peek()] >= heights[i]) {
                right[mono_stack.peek()] = i;
                mono_stack.pop();
            }
            left[i] = (mono_stack.isEmpty() ? -1 : mono_stack.peek());
            mono_stack.push(i);
        }
        
        int ans = 0;
        for (int i = 0; i < n; ++i) {
            ans = Math.max(ans, (right[i] - left[i] - 1) * heights[i]);
        }
        return ans;
    }
}
相关推荐
希望永不加班1 小时前
SpringBoot 过滤器(Filter)与请求链路梳理
java·spring boot·后端·spring
Lyyaoo.1 小时前
【JAVA基础面经】抽象类/方法与接口
java·开发语言
0xDevNull1 小时前
Java实现Redis延迟队列:从原理到高可用架构
java·开发语言·后端
于先生吖1 小时前
无人共享健身房 Java 后端源码 + 多端对接完整方案
java·开发语言
恼书:-(空寄1 小时前
Spring 事务失效的 8 大场景 + 原因 + 解决方案
java·后端·spring
野生技术架构师2 小时前
1000道互联网大厂Java岗面试原题解析(八股原理+场景题)
java·开发语言·面试
jiankeljx2 小时前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
cyforkk2 小时前
Java 开源项目指南:如何规范地发布首个 GitHub Release
java·开源·github
qqty12172 小时前
Java进阶学习之路
java·开发语言·学习
是苏浙2 小时前
初识集合框架
java·数据结构