解题思路:
(1)求出该位置行最大值和列最大值中较小的那一个
(2)增加的高度即为(1)的值减去该位置的值
class Solution {
public:
int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {
vector<int> row,col;
for(int i=0;i<grid.size();i++) {
auto maxPosition = max_element(grid[i].begin(), grid[i].end());
row.push_back(*maxPosition);
}
int max = 0;
for(int i=0;i<grid[0].size();i++) {
max = 0;
for(int j=0;j<grid.size();j++) {
if(grid[j][i]>max) max = grid[j][i];
}
col.push_back(max);
}
//比较行列大小
int sum = 0;
for(int i=0;i<grid.size();i++) {
for(int j=0;j<grid[i].size();j++) {
sum+=(min(row[i],col[j])-grid[i][j]);
}
}
return sum;
}
};