# Hard-题目30：85. Maximal Rectangle

Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing all ones and return its area.

（这也是原创的）朴素解法就是dfs，复杂度貌似为O(4n)$O(4^n)$就不谈了。

public class Solution {
public int maximalRectangle(char[][] matrix) {
if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return 0;

    int[] height = new int[matrix[0].length];
for(int i = 0; i < matrix[0].length; i ++){
if(matrix[0][i] == '1') height[i] = 1;
}
int result = largestInLine(height);
for(int i = 1; i < matrix.length; i ++){
resetHeight(matrix, height, i);
result = Math.max(result, largestInLine(height));
}

return result;
}

private void resetHeight(char[][] matrix, int[] height, int idx){
for(int i = 0; i < matrix[0].length; i ++){
if(matrix[idx][i] == '1') height[i] += 1;
else height[i] = 0;
}
}

public int largestInLine(int[] height) {
if(height == null || height.length == 0) return 0;
int len = height.length;
Stack<Integer> s = new Stack<Integer>();
int maxArea = 0;
for(int i = 0; i <= len; i++){
int h = (i == len ? 0 : height[i]);
if(s.isEmpty() || h >= height[s.peek()]){
s.push(i);
}else{
int tp = s.pop();
maxArea = Math.max(maxArea, height[tp] * (s.isEmpty() ? i : i - 1 - s.peek()));
i--;
}
}
return maxArea;
}


}

27ms,64.32%,32ms,8.41%

• 本文已收录于以下专栏：

## LeetCode --- 85. Maximal Rectangle

• makuiyu
• 2015年04月03日 17:09
• 2206

## leetcode_question_85 Maximal Rectangle

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones an...
• doc_sgl
• 2013年09月19日 17:29
• 14387

## LeetCode85——Maximal Rectangle

• zhangxiao93
• 2016年01月28日 20:44
• 1400

## LeetCode 85 Maximal Rectangle (Python详解及实现)

【题目】 Given a 2D binary matrix filled with 0'sand 1's, find the largest rectangle containing only 1'...
• yangjingjing9
• 2017年08月09日 16:37
• 209

## LeetCode85 Maximal Rectangle java题解

public static int maximalRectangle(char[][] matrix) { int rowNum=matrix.length; if(rowNum=...
• u012249528
• 2015年06月30日 09:01
• 772

## 算法学习之动态规划(leetcode 85. Maximal Rectangle）

85. Maximal Rectangle
• maxiaotiaoti
• 2017年03月15日 16:59
• 1152

## Leetcode:85. Maximal Rectangle

Difficulty: Hard Ac 44msGiven a 2D binary matrix filled with 0’s and 1’s, find the largest rectangl...
• ofantasyx
• 2016年05月01日 12:28
• 130

## [LeetCode] 85. Maximal Rectangle

LeetCode
• hiimdaosui
• 2016年08月03日 17:59
• 109

## leetCode 85. Maximal Rectangle

Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing only 1’s and...
• liujunzxcv
• 2017年09月25日 11:59
• 55

## [Leetcode] 85. Maximal Rectangle

Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and...
• u013897903
• 2015年04月01日 02:43
• 276

举报原因： 您举报文章：Hard-题目30：85. Maximal Rectangle 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)