leetCode73. 矩阵置零
题目思路:
代码
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
// 力扣特色:先判断是否为空
if(matrix.empty() || matrix[0].empty()) return;
int n = matrix.size(), m = matrix[0].size();
int r0 = 0, c0 = 0; // 0表示第一行,第一列没出现过0
for(int j = 0; j < m; j++) if(!matrix[0][j]) r0 = 1;
for(int i = 0; i < n; i++) if(!matrix[i][0]) c0 = 1;
for(int j = 1; j < m; j++){
for(int i = 0; i < n; i++){
if(!matrix[i][j]) matrix[0][j] = 0;
}
}
for(int i = 1; i < n; i++){
for(int j = 0; j < m; j++){
if(!matrix[i][j]) matrix[i][0] = 0;
}
}
for(int j = 1; j < m; j++){
if(!matrix[0][j]){
for(int i = 0; i < n; i++){
matrix[i][j] = 0;
}
}
}
for(int i = 1; i < n; i++){
if(!matrix[i][0]){
for(int j = 0; j < m; j++){
matrix[i][j] = 0;
}
}
}
if(r0) for(int j = 0; j < m; j++) matrix[0][j] = 0;
if(c0) for(int i = 0; i < n; i++) matrix[i][0] = 0;
return ;
}
};