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;
    }
}
相关推荐
沉鱼.44几秒前
第十二届题目
java·前端·算法
赫瑞44 分钟前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
周末也要写八哥2 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶3 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
杰克尼3 小时前
springCloud_day07(MQ高级)
java·spring·spring cloud
NHuan^_^5 小时前
SpringBoot3 整合 SpringAI 实现ai助手(记忆)
java·人工智能·spring boot
Mr_Xuhhh5 小时前
从ArrayList到LinkedList:理解链表,掌握Java集合的另一种选择
java·数据结构·链表
倦王5 小时前
力扣日刷47-补
python·算法·leetcode
错把套路当深情5 小时前
Java 全方向开发技术栈指南
java·开发语言
han_hanker5 小时前
springboot 一个请求的顺序解释
java·spring boot·后端