思路:
先找到原矩阵中的0,记录位置,然后行列置0。
代码:
class Solution {
public:
typedef pair<int,int> PII;
vector<PII> f;
void setZeroes(vector<vector<int>>& matrix) {
//先遍历出原矩阵有多少个0
int cnt=0;
int n=matrix.size() , m=matrix[0].size();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
if(!matrix[i][j]) {
cnt++;
f.push_back({i,j});
}
}
while(cnt--){
auto c=f[cnt];
int ii=c.first, jj=c.second;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(ii == i && jj == j){
int mm=m;
int nn=n;
while(mm--) matrix[ii][mm] = 0;
while(nn--) matrix[nn][jj] = 0;
}
}
}
}
}
};
评论区