给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
思路:
找到0的位置,把0出现的数组的其他值夜置为0
需要额外空间方法:
1、定义两个布尔数组标记二维数组中行和列0出现的位置,标记在布尔数组中。
2、在遍历二维数组,把行和列0出现的位置都重置为0.
class Solution {public void setZeroes(int[][] matrix) {/** 如果数组中包含0,就把这个里面的数都设置为0关键在于如何把0标注以及如何重置0*/int rows = matrix.length;int cols = matrix[0].length;boolean [] rowsZero = new boolean[rows];boolean [] colsZero = new boolean[cols];for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j ++) {if(matrix[i][j] == 0) {rowsZero[i] = true;colsZero[j] = true;}}}for (int i = 0; i < rows; i++){for (int j = 0; j < cols; j ++) {if(rowsZero[i] || colsZero[j]){matrix[i][j] = 0;}}}}
}