本文主要是介绍LeetCode OJ:Maximal Rectangle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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.
最大子矩阵问题
具体思想见:
最大子段和问题到最大子矩阵问题(四):最大子矩阵面积问题
class Solution {
public:int maximalRectangle(vector<vector<char> > &matrix) {if(matrix.empty())return 0;int len=matrix[0].size();vector<int> H(len);vector<int> L(len);vector<int> R(len,len);int result=0;for(int i=0;i<matrix.size();i++){int left=0,right=len;for(int j=0;j<len;j++){if(matrix[i][j]=='1'){H[j]++;L[j]=max(L[j],left);}else{left=j+1;H[j]=0;L[j]=0;R[j]=len;}}for(int j=len-1;j>=0;j--){if(matrix[i][j]=='1'){R[j]=min(R[j],right);result=max(result,H[j]*(R[j]-L[j]));}else right=j;}}return result;}
};
这篇关于LeetCode OJ:Maximal Rectangle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!