编写一种算法,若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,判断很方便