73. 矩阵置零https://leetcode.cn/problems/set-matrix-zeroes/
给定一个
m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1:
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]
算法思路
遍历matrix数组,用标记数组记录下matrix[i][j]=0的行和列,然后根据标记数组的记录重新给matrix数组赋值;
class Solution {
public void setZeroes(int[][] matrix) {
//标记数组
int[] row=new int[matrix.length];
int[] col=new int[matrix[0].length];
//遍历matrix将matrix[i][j]=0的行和列记录到标记数组
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0){
row[i]=1;
col[j]=1;
}
}
}
//将被标记的行和列设定为0
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
if(row[i]==1||col[j]==1){
matrix[i][j]=0;
}
}
}
}
}