LeetCode Maximal Rectangle
来源:互联网 发布:linux下怎么解压缩 编辑:程序博客网 时间:2024/06/05 05:03
原题链接在这里:https://leetcode.com/problems/maximal-rectangle/
与Largest Rectangle in Histogram相似. 用一个数组dp存储一行中每一个点的最大高度,然后像Largest Rectangle in Histogram算这一行能产生的最大面积maxRec.
Time O(m*n), m是matrix的高,n是matrix的长。Space O(n).
AC Java:
public class Solution { public int maximalRectangle(char[][] matrix) { if(matrix == null || matrix.length == 0 || matrix[0].length == 0){ return 0; } int h = matrix.length; int w = matrix[0].length; // length,length,length,length,length int [] dp = new int[w]; int maxRec = 0; for(int i = 0; i<h; i++){ for(int j=0; j<w; j++){ dp[j] = matrix[i][j] == '0' ? 0 : dp[j]+1; } maxRec = Math.max(maxRec,helper(dp)); } return maxRec; } private int helper(int [] nums){ if(nums == null || nums.length == 0){ return 0; } Stack<Integer> stk = new Stack<Integer>(); int [] h = new int[nums.length + 1]; h = Arrays.copyOf(nums, nums.length+1); int maxArea = 0; int i = 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; }}
0 0
- 【LeetCode】Maximal Rectangle && Maximal Square
- Leetcode:Maximal Square & Maximal Rectangle
- LeetCode: Maximal Rectangle
- LeetCode Maximal Rectangle
- LeetCode: Maximal Rectangle
- [LeetCode] Maximal Rectangle
- [leetcode] Maximal Rectangle
- [LeetCode]Maximal Rectangle
- [leetcode]Maximal Rectangle
- LeetCode-Maximal Rectangle
- [leetcode] Maximal Rectangle
- Leetcode Maximal Rectangle
- [LeetCode] Maximal Rectangle
- leetcode Maximal Rectangle
- LeetCode Maximal Rectangle
- LeetCode | Maximal Rectangle
- [LeetCode] Maximal Rectangle
- [Leetcode] Maximal Rectangle (Java)
- servlet的生命周期
- linux下jar命令与jar包
- PowerDesigner—你知道CDM、LDM、PDM、OOM的区别吗?
- struts2下的ajax注意事项
- Java多线程:线程状态
- LeetCode Maximal Rectangle
- Android获取UI控件的宽高
- 用NetBeans做简易计算器
- hdu 5119 dp
- 设计模式之单例模式(线程安全)
- BZOJ 3209
- 使用简单标签模拟标签(c:if c:when c:otherwise c:foreach)
- 0917Android基础自定义View(颜色渲染PorterDuff及Xfermode)
- Android Studio 读取Assets目录下的文件