地址
https://leetcode-cn.com/problems/set-matrix-zeroes/
描述
思想
代码
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
//n行数,m列数
int n=matrix.size(),m=matrix[0].size();
int r0=1,c0=1;
//r0,c0记录下第一行和第一列需不要变为0
for(int i=0;i<m;i++){
if(!matrix[0][i]) r0=0;
}
for(int i=0;i<n;i++){
if(!matrix[i][0]) c0=0;
}
//matrix[0][j],记录第i列要不要置零
//matrix[i][0],记录第i行要不要置零
//先枚举哪一行要置零
for(int i=1;i<n;i++){
for(int j=0;j<m;j++){
if(!matrix[i][j]){
matrix[i][0]=0;
}
}
}
for(int i=0;i<n;i++){
for(int j=1;j<m;j++){
if(!matrix[i][j]){
matrix[0][j]=0;
}
}
}
//行清零看0列
for(int i=1;i<n;i++){
if(!matrix[i][0]){
for(int j=0;j<m;j++){
matrix[i][j]=0;
}
}
}
//列清零看0行
for(int i=1;i<m;i++){
if(!matrix[0][i]){
for(int j=0;j<n;j++){
matrix[j][i]=0;
}
}
}
//第一行要清零
if(!r0) {
for(int i=0;i<m;i++){
matrix[0][i]=0;
}
}
if(!c0){
for(int i=0;i<n;i++){
matrix[i][0]=0;
}
}
}
};