编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零
代码一思路:
第一次遍历时记录,用两个布尔类型数组标记行和列中是否有0元素;
第二次遍历时置零
class Solution {public void setZeroes(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;boolean[] row = new boolean[m];boolean[] col = new boolean[n];for(int i = 0;i<m;i++){for(int j = 0;j<n;j++)if(matrix[i][j] == 0){//记录row[i] = true;col[j] = true;}}for(int i = 0;i<m;i++){for(int j = 0;j<n;j++)if(row[i]||col[j]){//置零matrix[i][j] = 0;}}}
}
1.不得不说,布尔类型用来标记具有天然优势,因为标记位后来一般都要判断是否符合某种条件,布尔类型直接代表true false,判断很方便