题目:3033. 修改矩阵
思路:先找出每一列的最大值,然后再遍历一遍将-1的位置都替换掉。
class Solution {
public:
vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {
int n=matrix.size(),m=matrix[0].size();
vector<int> col(m,-1);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
col[j]=max(col[j],matrix[i][j]);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(matrix[i][j]==-1) matrix[i][j]=col[j];
}
}
return matrix;
}
};
下面的代码去掉了列数组,直接在遍历每一列的时候就找出最大值,并且更新-1的位置。
class Solution {
public:
vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {
int n=matrix.size(),m=matrix[0].size();
for(int i=0;i<m;i++){
int tmp=-1;
for(int j=0;j<n;j++){
tmp=max(tmp,matrix[j][i]);
}
for(int j=0;j<n;j++){
if(matrix[j][i]==-1) matrix[j][i]=tmp;
}
}
return matrix;
}
};