LeetCode Largest Rectangle in Histogram
2015-09-17 04:35
393 查看
原题链接在这里:https://leetcode.com/problems/largest-rectangle-in-histogram/
参考了这篇帖子:/article/5789867.html
里面讲的很清楚,生成了stack, 当遇到比stack 顶部更大array元素时或者stack为空时,就把更打元素的index存入stack中。
当遇到小元素时,要出栈并更新maxArea.
Note: 1. 需新生成一个array, 长度为原array 长度+1,用Arrays.copyOf()来复制原array, 并把最后一个数字设为0.
2. 数组里存的是index, 而不是array的元素。
AC Java:
参考了这篇帖子:/article/5789867.html
里面讲的很清楚,生成了stack, 当遇到比stack 顶部更大array元素时或者stack为空时,就把更打元素的index存入stack中。
当遇到小元素时,要出栈并更新maxArea.
Note: 1. 需新生成一个array, 长度为原array 长度+1,用Arrays.copyOf()来复制原array, 并把最后一个数字设为0.
2. 数组里存的是index, 而不是array的元素。
AC Java:
public class Solution { public int largestRectangleArea(int[] height) { if(height == null || height.length == 0){ return 0; } Stack<Integer> stk = new Stack<Integer>(); int [] h = new int[height.length + 1]; h = Arrays.copyOf(height,height.length+1); int i = 0; int maxArea = 0; while(i<h.length){ if(stk.isEmpty() || h[stk.peek()] <= h[i]){ stk.push(i); i++; }else{ int index = stk.pop(); maxArea = Math.max(maxArea, h[index] * (stk.isEmpty() ? i : i-stk.peek()-1)); } } return maxArea; } }
相关文章推荐
- LeetCode Largest Rectangle in Histogram
- SLIC图像超像素分割算法解析
- 条款32:确定人的public继承塑模出来is-a关系
- 基于冲量的刚体系统动力学模拟 (Mirtich。伯克利大学博士论文) 草稿
- [LeetCode 238] Product of Array Except Self
- 从Activity的启动细窥BinderIPC(3)
- ?Min Stack
- Container With Most Water 解答
- 从Activity的启动细窥BinderIPC(2)
- 款31:将文件间的编译依存关系降到最低
- 课下参考二 安装Linux系统初步
- 课下参考五 linux的ssh服务实现多用户登录linux系统--windows客户端篇
- java网络编程【精简篇】
- Single Number II
- 从Activity的启动细窥BinderIPC(1)
- 课下参考四 配置并使用ssh登录LINUX的主机--windows篇
- 「LintCode」java字符串練習四──anagrams
- CSS样式小总结
- 《女士品茶》与统计检验
- 浅谈Linux中的信号处理机制(一)