描述: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
示例 1:
输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ]
解法一:没有使用原地算法,思路首先遍历矩阵,将元素为零的行和列各自记录到一个Set集合中,然后重新遍历矩阵,凡是在行和列Set集合重出现的,都进行置零。
代码如下:
public void setZeroes(int[][] matrix) {
if(matrix == null)
return ;
Set<Integer> row = new HashSet<>();
Set<Integer> col = new HashSet<>();
for(int i = 0; i<matrix.length; i++){
for(int j = 0; j<matrix[i].length; j++){
if(matrix[i][j] == 0){
row.add(i);
col.add(j);
}
}
}
for(int i = 0; i<matrix.lengt