0
点赞
收藏
分享

微信扫一扫

【力扣·每日一题】807. 保持城市天际线(C++ 贪心)


题意

【力扣·每日一题】807. 保持城市天际线(C++ 贪心)_i++

思路:

要求修改后的天际线不变,增加的尽可能多。
也就是说对于一个位置来说,最多可以增加到行列的最小值。
先预处理每行每列的最小值,再遍历每个位置求和即可。

代码:

class Solution {
public:
int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {
int n=grid.size(),m=grid[0].size();
int a[n+1],b[m+1];
memset(a,0,sizeof a);
memset(b,0,sizeof b);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
a[i]=max(a[i],grid[i][j]);
b[j]=max(b[j],grid[i][j]);
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
ans=ans+min(a[i],b[j])-grid[i][j];
}
}
return ans;
}
};


举报

相关推荐

0 条评论