零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
public class setZero {
public static void main(String[] args) {
int[][] matrix={{1,1,1},{1,0,1},{1,1,1}};
SetZero(matrix);
printMatrix(matrix);
}
//编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零
private static void SetZero(int[][] matrix){
boolean[] line=new boolean[matrix.length];
boolean[] column=new boolean[matrix[0].length];
//找出清零的行列
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j]==0){
line[i]=true;
column[j]=true;
}
}
}
//开始对行清零
for (int i = 0; i <matrix.length; i++) {//行
if (column[i]){
for (int j = 0; j <matrix[0].length ; j++) {//列
matrix[i][j]=0;
}
}
}
//对列清零
for (int i = 0; i <matrix[0].length ; i++) {//列
if (column[i]){
for (int j = 0; j < matrix.length; j++) {//行
matrix[j][i]=0;
}
}
}
}
private static void printMatrix(int[][] matrix){
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
System.out.print(matrix[i][j]+"\t");
}
System.out.println();
}
}
}