73.矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int r = matrix.size(); //行
int c = matrix[0].size(); //列
vector<vector<int>> ans(matrix);
for(int a = 0; a < r; a++){
for(int b = 0; b < c; b++){
if(matrix[a][b] == 0){
int t_r = a;
while(t_r >= 0){
ans[t_r][b] = 0;
--t_r;
}
int l_r = a;
while(l_r < r){
ans[l_r][b] = 0;
++l_r;
}
int z_c = b;
while(z_c >= 0){
ans[a][z_c] = 0;
--z_c;
}
int y_c = b;
while(y_c < c){
ans[a][y_c] = 0;
++y_c;
}
}
}
}
for(int i = 0; i < r; ++i){
for(int j = 0; j < c; ++j){
if(!ans[i][j])
matrix[i][j] = 0;
}
}
return;
}
};
解答:遍历整个数组然后把为0的那个元素的横竖做标记然后在新的矩阵里面修改 (在原矩阵修改也可以)