`
hcx2013
  • 浏览: 88954 次
社区版块
存档分类
最新评论

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.

 

public class Solution {
    public int maximalRectangle(char[][] matrix) {
    	if (matrix==null || matrix.length==0 || matrix[0].length==0) {
    		return 0;
    	}
        int m = matrix.length;
        int n = matrix[0].length;
        int max = 0;
        int[] height = new int[n];
        for (int i = 0; i < m; i++) {
        	for (int j = 0; j < n; j++) {
        		if (matrix[i][j] == '0') {
        			height[j] = 0;
        		} else {
        			height[j] += 1;
        		}
        	}
        	max = Math.max(largestRectangleArea(height), max);
        }
        return max;
    }
    public int largestRectangleArea(int[] height) {
    	Stack<Integer> stack = new Stack<Integer>();
    	int i = 0;
    	int maxArea = 0;
    	int[] tmp = Arrays.copyOf(height, height.length+1);
    	while (i < tmp.length) {
    		if (stack.isEmpty() || tmp[stack.peek()] <= tmp[i]) {
    			stack.push(i++);
    		} else {
    			int t = stack.pop();
    			maxArea = Math.max(maxArea, tmp[t]*(stack.isEmpty() ? i: (i-stack.peek()-1)));
    		}
    	}
    	return maxArea;
    }
}

 

0
0
分享到:
评论

相关推荐

    java-leetcode题解之Maximal Rectangle.java

    java java_leetcode题解之Maximal Rectangle.java

    python-leetcode题解之085-Maximal-Rectangle

    python python_leetcode题解之085_Maximal_Rectangle

    js-leetcode题解之85-maximal-rectangle.js

    javascript js_leetcode题解之85-maximal-rectangle.js

    c语言-leetcode题解之0085-maximal-rectangle.zip

    c语言基础 c语言_leetcode题解之0085_maximal_rectangle.zip

    3、动态规划必练题(含解法).pdf

    12. **Maximal Rectangle** (最大的矩形) 在一个01矩阵中找到最大的1构成的矩形。利用汉诺塔和单调栈解决。 13. **Maximal Square** (最大的正方形) 找到01矩阵中最大的全1子矩阵。可以使用动态规划和单调栈或...

    Leetcode题目+解析+思路+答案.pdf

    - **Maximal Rectangle**:在二维矩阵中找到最大的矩形。 - **Palindrome Number**:判断一个数字是否是回文数。 - **Search a 2D Matrix**:在二维矩阵中搜索目标值。 - **Search for a Range**:在一个排序...

    LeetCode C++全解

    1. Introduction 2. Array i. Remove Element ... Maximal Rectangle x. Palindrome Number xi. Search a 2D Matrix xii. Search for a Range xiii. Search Insert Position xiv. Find Peak Element

    LeetCode练习答案

    - **最大矩形(Maximal Rectangle)**: 在由'0'和'1'组成的二维矩阵中,找到只包含'1'的最大矩形,并返回其面积。 - **回文数(Palindrome Number)**: 判断一个整数是否是回文数。 - **搜索二维矩阵(Search a 2D Matrix...

    LeetCode leetcode部分题解答代码实现

    * Maximal Rectangle:给定一个矩形,返回矩形中的最大子矩形。这个题目需要使用动态规划的思想,将矩形分解成更小的矩形,并找到最大矩形。 2. 位操作 位操作是 LeetCode 中的一种常见题型,下面是一些关于位操作...

    lrucacheleetcode-leetcode:leetcode

    Rectangle Monotonic stack for 2d array 239. Sliding Window Maximum 255. Verify Preorder Sequence in Binary Search Tree 907. Sum of Subarray Minimums 二叉搜索树 99. Recover Binary Search Tree 109. ...

    leetcode316-LeetCode:leetcode的解决方案

    Rectangle:单调栈(Histogram变形) Largest Rectangle in Histogram:单调栈 Island Perimeter:简单对比(map+zip的使用) or 遍历查找 Max Area of Island:DFS(本来想用DP,发现出不来) Number of Islands:DFS My ...

    leetcode分类-LeetCode:力码

    leetcode 分类 LeetCode Progress 128/154 Other Solutions C++,有详细思路解释 python,部分有解释 Java,部分有解释 ...norvig神牛Python代码...Rectangle ###Recursion N-Queens N-Queens II Balanced Binary Tree Binar

    dna匹配leetcode-leetcode:leetcode刷题

    Rectangle 栈 局部递增 或者 动态规划 Binary Tree Inorder Traversal 栈 递归 Single Number 异或 Copy List with Random Pointer 单链表 map Max Points on a Line 斜率 map, int&gt; Fraction to Recurring Decimal ...

    LeetCode最全代码

    ...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...

    leetcode中国-leetcode:leetcode刷题

    maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈判断括号匹配 Regular Expression Matching 递归匹配 wildcard matching 动态规划 ...

    LeetCodemaxarea-maximal-rectangle:最大矩形

    力扣最大面积最大矩形 给定一个由 0 和 1 填充的二维二进制矩阵,找到仅包含 1 的最大矩形并返回其面积。 Example: Input: [ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ...=

    leetcode和oj-ProgProblems:程序问题

    leetcode 和 oj 编程问题 在线裁判网站问题解决方案 如果您遇到这个问题并对如何更好地完成某些解决方案有建议或意见,欢迎您。 palin.ml : ...MaximalRectangle : oj.leetcode 问题的java解决方案

    图的建立与图的深度优先、广度优先遍历.cpp

    本资源是用C语言所写的,数据结构中图的创建及其相关的深度,广度遍历

    算法工程师思维导图—数据结构与算法.pdf

    :maximal-rectangle问题可以用栈来解决,通过维护一个栈,记录矩阵中的元素,并使用动态规划来解决最大矩形面积问题。 二维矩阵 二维矩阵是一种常见的数据结构,用于存储矩阵数据。maximal-rectangle问题可以转换...

Global site tag (gtag.js) - Google Analytics