题目描述
解题思路:
class Solution {
public:
int largestSubmatrix(vector<vector<int>>& w) {
int n = w.size() , m = w[0].size();
for(int i = 1; i < n; i++)
for(int j = 0; j < m; j++)
if(w[i][j])
{
// 从第一行开始,算出每一个点向上最多连续的1的个数
w[i][j] += w[i-1][j];
}
vector<int> q(m); // 存储每一行,然后进行降序排序
int res = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
// 将当前行的每个数存储下来
q[j] = w[i][j];
}
// 降序排序
sort(q.begin() , q.end() , greater<int>());
for(int j = 0; j < m; j++)
{
res = max(res , q[j] * (j + 1));
}
}
return res;
}
};