题目传送门
链接:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/
题干
题解
记录下来每行和每列的最大值x[i], y[i]
最后可以增加的高度就等于 min(x[i], y[j]) - grid[i][j]
Code
class Solution {
public:
int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {
int n = grid.size();
// 记录每行和每列的最大值
int x[55], y[55];
for (int i = 0; i < n; i++) {
x[i] = 0;
for (int j = 0; j < n; j++) {
x[i] = max(x[i], grid[i][j]);
}
}
for (int i = 0; i < n; i++) {
y[i] = 0;
for (int j = 0; j < n; j++) {
y[i] = max(y[i], grid[j][i]);
}
}
int res = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
res += min(x[i], y[j]) - grid[i][j];
}
}
return res;
}
};