①先遍历每行的最大值O(n2),再遍历每列的最大值O(n2),再取二者最大值O(n2)
②在一个二层for循环中做到上述三点。
class Solution {
public:
int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) {
int n = grid.size();
vector<int> rowMax(n); //记录行的最大值
vector<int> colMax(n); //记录列的最大值
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
rowMax[i] = max(rowMax[i], grid[i][j]);
colMax[j] = max(colMax[j], grid[i][j]);
}
}
}
};