题目:
如果矩阵的某个元素为0,则将其所在的行和列清0
1 2 3 4
5 6 0 8
9 0 11 12
13 14 15 16
package 多维数组与矩阵;
public class case02_0所在行列清零 {
public static void main(String[] args) {
int[][] matrix={
{1,2,3,4},
{5,6,0,8},
{9,0,11,12},
{13,14,15,16},
};
f(matrix);
printMatrix(matrix);
}
//打印矩阵
private static void printMatrix(int[][] matrix) {
for(int[] arr:matrix){
for(int e:arr){
System.out.print(e+"\t");
}
}
System.out.println();
}
static void f(int[][] matrix){
int M=matrix.length;
int N=matrix[0].length;
//记录那些行出现了0
int[] rowRecord=new int[M];
//记录哪些列出现了0
int[] colRecord=new int[N];
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
if(matrix[i][j]==0){
rowRecord[i]=1;
colRecord[j]=1;
}
}
}
for(int row=0;row<M;row++){
//当前的行和列被标记,这个元素就应该变为0
for(int col=0;col<N;col++){
if(rowRecord[row]==1||colRecord[col]==1){
matrix[row][col]=0;
}
}
}
}
}