代码:
暴力解法(超时
- class Solution {
- public int largestRectangleArea(int[] heights) {
- int area = heights[0];
- int n = heights.length;
- for(int i=0;i
- int min = heights[i];
- for(int j=i;j
- min = Math.min(min,heights[j]);
- area = Math.max(area,heights[i]);
- area = Math.max(area,min*(j-i+1));
- }
- }
- return area;
- }
- }
题解里的 用栈存两边边界的数字
- class Solution {
- public int largestRectangleArea(int[] heights) {
- int n = heights.length;
- int[] left = new int[n];
- int[] right = new int[n];
- Deque
mono_stack = new ArrayDeque(); - for(int i=0;i
- while(!mono_stack.isEmpty()&&heights[mono_stack.peek()]>=heights[i]){
- mono_stack.pop();
- }
- left[i] = (mono_stack.isEmpty()?-1:mono_stack.peek());
- mono_stack.push(i);
- }
- mono_stack.clear();
- for(int i=n-1;i>=0;i--){
- while(!mono_stack.isEmpty()&&heights[mono_stack.peek()]>=heights[i]){
- mono_stack.pop();
- }
- right[i] = (mono_stack.isEmpty()?n:mono_stack.peek());
- mono_stack.push(i);
- }
- int ans = 0;
- for(int i=0;i
- ans = Math.max(ans,(right[i]-left[i]-1)*heights[i]);
- }
- return ans;
- }
- }
-
相关阅读:
MybatisPlus 快速开发
十、Ajax&Axios
详解容灾架构中的脑裂问题
https代理如何设置?https代理有什么好处和坏处?
Docker架构简介
linux内核的reciprocal_value结构体
文件预览服务器kkfileview安装部署(linux 版)
JAVA总结笔记
深度解读《深度探索C++对象模型》之C++虚函数实现分析(三)
Mysql(视图)
-
原文地址:https://blog.csdn.net/stacey777/article/details/134526382