二维矩阵将零所在的行列清空
题意:将零所在的行列清空;
思路:定义两个两个数组,分别是列和行数组,进行双重for遍历,找到为0,两个数组进行记录,、
最新再进行双重for循环,判断行数组或者列数组是否有等于1,如果有则将改行该列变为1;
package _3多维数和矩阵;
/*
* 题意:将零所在的行列清空;
*
*思路:定义两个两个数组,分别是列和行数组,进行双重for遍历,找到为0,两个数组进行记录,、
*最新再进行双重for循环,判断行数组或者列数组是否有等于1,如果有则将改行该列变为1;
*/
public class b将0所在的位置清零 {
public static void main(String[] args) {
int matrix[][] = { { 1, 2, 3, 1},
{ 0, 5, 4, 0 },
{ 13, 4, 6, 3 } };
test(matrix);
}
private static void test(int[][] matrix) {
// TODO Auto-generated method stub
int n = matrix.length;
int m = matrix[0].length;
// 记录行出现0
int row[] = new int[n];
// 记录列出现0
int rel[] = new int[m];
// 下面进行扫描
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] == 0) {
row[i] = 1;
rel[j] = 1;// 出现为0的全部记录起来 记为一
}
}
}
// 再一次扫描
for (int i = 0; i < n; i++) {// 将有1的行和列变为0
for (int j = 0; j < m; j++) {
if (row[i] == 1 || rel[j] == 1) {// 如果这行或者这列有一的
matrix[i][j] = 0;//
}
}
}
for (int i = 0; i < n; i++) {// 输出
for (int j = 0; j < m; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}