class Solution {
public:
int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {
int result = 0;
vector<int> arr1;
for(int i=0;i<grid.size();i++)
{
int max=0;
for(int j=0;j<grid[0].size();j++)
{
if(grid[i][j]>max) max =grid[i][j];
}
arr1.push_back(max);
}
vector<int> arr2;
for(int i=0;i<grid[0].size();i++)
{
int max=0;
for(int j=0;j<grid.size();j++)
{
if(grid[j][i]>max) max =grid[j][i];
}
arr2.push_back(max);
}
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[0].size();j++)
{
result = result +min(arr1[i],arr2[j])-grid[i][j];
}
}
return result;
}
};
先扫描两次,分别保存每行和每列的最大值,然后遍历二维数组,求行列最大值中较小的那个数和矩阵中每个数的差值。