求Leetcode OJ Maximal Rectangle的n^2解法# JobHunting - 待字闺中w*x2012-08-06 07:081 楼Given a 2D binary matrix filled with 0's and 1's, find the largest rectanglecontaining all ones and return its area.
s*s2012-08-06 07:084 楼这道题目是另一个问题的升级,基础题目是这样的:表中有若干柱状图,问最大包含在柱状图内的矩形。这个题目可以用自左到右的堆栈解决,复杂度O(N)然后上面的题目就是假设有N行,上界是1,下界是1..N划归成上面的基础题目解决,复杂度O(N^2)
l*c2012-08-06 07:085 楼哦,NOT contain all ones, but all contained are ones.【在 f*******t 的大作中提到】: 是要里面全部为1
w*x2012-08-06 07:086 楼这题我跪了【在 s*******s 的大作中提到】: 这道题目是另一个问题的升级,: 基础题目是这样的:: 表中有若干柱状图,问最大包含在柱状图内的矩形。: 这个题目可以用自左到右的堆栈解决,复杂度O(N): 然后上面的题目就是假设有N行,上界是1,下界是1..N: 划归成上面的基础题目解决,复杂度O(N^2)
w*x2012-08-06 07:088 楼我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~【在 p*****2 的大作中提到】: : 这题一维的你会了,二维就简单了。
p*22012-08-06 07:089 楼没办法呀。牛人咱比不了呀。昨天那题解的也很牛X呀。一看就不是一般人。【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
w*x2012-08-06 07:0811 楼Given a 2D binary matrix filled with 0's and 1's, find the largest rectanglecontaining all ones and return its area.
s*s2012-08-06 07:0814 楼这道题目是另一个问题的升级,基础题目是这样的:表中有若干柱状图,问最大包含在柱状图内的矩形。这个题目可以用自左到右的堆栈解决,复杂度O(N)然后上面的题目就是假设有N行,上界是1,下界是1..N划归成上面的基础题目解决,复杂度O(N^2)
l*c2012-08-06 07:0815 楼哦,NOT contain all ones, but all contained are ones.【在 f*******t 的大作中提到】: 是要里面全部为1
w*x2012-08-06 07:0816 楼这题我跪了【在 s*******s 的大作中提到】: 这道题目是另一个问题的升级,: 基础题目是这样的:: 表中有若干柱状图,问最大包含在柱状图内的矩形。: 这个题目可以用自左到右的堆栈解决,复杂度O(N): 然后上面的题目就是假设有N行,上界是1,下界是1..N: 划归成上面的基础题目解决,复杂度O(N^2)
w*x2012-08-06 07:0818 楼我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~【在 p*****2 的大作中提到】: : 这题一维的你会了,二维就简单了。
p*22012-08-06 07:0819 楼没办法呀。牛人咱比不了呀。昨天那题解的也很牛X呀。一看就不是一般人。【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
z*22012-08-06 07:0821 楼还好吧。。。是挺难想的。。。不过也没那么变态 毕竟两题在一起。。。的确容易联系起来 不过联系起来了也很难完整的写出来【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
h*i2012-08-06 07:0822 楼还好,我做的时候也想到了。不过面试的时候最好写O(n^3),否则一看就是做过。【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
f*s2012-08-06 07:0823 楼N^3的方法是怎样的?我只知道不一定全为一的那个可以N^3, 全为1的矩阵(不是方阵)的怎么搞?【在 h***i 的大作中提到】: 还好,我做的时候也想到了。不过面试的时候最好写O(n^3),否则一看就是做过。
z*22012-08-06 07:0825 楼还好吧。。。是挺难想的。。。不过也没那么变态 毕竟两题在一起。。。的确容易联系起来 不过联系起来了也很难完整的写出来【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
h*i2012-08-06 07:0826 楼还好,我做的时候也想到了。不过面试的时候最好写O(n^3),否则一看就是做过。【在 w****x 的大作中提到】: : 我只知道O(n^3)的, 这题居然能抽象成histogram, 这是多么强大的思维能力阿~~~
f*s2012-08-06 07:0827 楼N^3的方法是怎样的?我只知道不一定全为一的那个可以N^3, 全为1的矩阵(不是方阵)的怎么搞?【在 h***i 的大作中提到】: 还好,我做的时候也想到了。不过面试的时候最好写O(n^3),否则一看就是做过。
B*t2012-08-06 07:0830 楼class Solution {public:int maximalRectangle(vector > &matrix) {// Start typing your C/C++ solution below// DO NOT write int main() functionif(!matrix.size())return 0;int start, largest = 0;vector left(matrix[0].size(), 0);vector right(matrix[0].size(), 0);vector height(matrix[0].size(), 0);for(int i = 0; i < matrix.size(); i++){left[0] = 0;right[matrix[0].size() - 1] = matrix[0].size() - 1;for(int j = 0; j < matrix[0].size(); j++)if(matrix[i][j] == '1')height[j] += 1;elseheight[j] = 0;for(int j = 1; j < matrix[0].size(); j++){start = j;while(start > 0 && height[j] <= height[start-1])start = left[start-1];left[j] = start;}for(int j = matrix[0].size() - 2; j >= 0; j--){start = j;while(start < height.size()-1 && height[j] <= height[start+1])start = right[start+1];right[j] = start;}for(int j = 0; j < matrix[0].size(); j++){int temp = (right[j] - left[j] + 1) * height[j];if(temp > largest)largest = temp;}}return largest;}};rectangle【在 w****x 的大作中提到】: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle: containing all ones and return its area.
c*72012-08-06 07:0831 楼你贴的是square sub-matrixleetcode是要retangle【在 z***2 的大作中提到】: http://www.geeksforgeeks.org/maximum-size-sub-matrix-with-all-1: 貌似最优的n^2解法