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;
    }
}
相关推荐
jxy99988 分钟前
mac mini 安装java JDK 17
java·开发语言·macos
YGGP8 分钟前
【Golang】LeetCode 1. 两数之和
leetcode
唐梓航-求职中9 分钟前
编程大师-技术-算法-leetcode-355. 设计推特
算法·leetcode·面试
biyezuopinvip11 分钟前
基于Spring Boot的企业网盘的设计与实现(毕业论文)
java·spring boot·vue·毕业设计·论文·毕业论文·企业网盘的设计与实现
Hx_Ma1613 分钟前
SSM搭建(三)Spring整合SpringMVC框架
java·后端·spring
无风听海15 分钟前
.NET10之ASP.NET Core的Filter管线
java·asp.net·.net
少许极端16 分钟前
算法奇妙屋(二十八)-递归、回溯与剪枝的综合问题 1
java·算法·深度优先·剪枝·回溯·递归
唐梓航-求职中18 分钟前
技术-算法-leetcode-1606. 找到处理最多请求的服务器(易懂版)
服务器·算法·leetcode
Boop_wu18 分钟前
简单介绍 JSON
java·开发语言
知识即是力量ol24 分钟前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列