本题源自LeetCode
-----------------------------------------------------------------
思路:
用求直方图的最大面积求解。
遍历二维数组。统计当前行及以上的直方图,然后计算。保存最大面积。
直方图的最大面积:用一个堆栈做数据结构,如果堆栈为空就将下标压栈,如果栈顶元素大于要入栈的元素,就将所有比入栈元素大的弹出,计算面积。
int maximalRectangle(vector<vector<char> > &matrix) {
/*
if(matrix.size()==0 || matrix[0].size()==0){
return 0;
}*/
int rows=matrix.size();
int cols=0;
if(rows!=0) //先判断rows 不等于0 ,如果等于0,matrix是NULL,不能对其做下标运算。才能做下面的matrix【0】,否则包段错误。
cols=matrix[0].size();
if(rows==0 || cols==0)
return 0;
int result=0;
for(int i=0;i<rows;i++){
vector<int> h(cols,0);
for(int j=0;j<cols;j