public class setZero {
static void print(int [][]a){
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
/*static void SetZero(int [][]a, int i, int j){
for(int k=0; k<a.length;k++){
a[i][k]=0;
}
for(int k=0; k<a[i].length;k++){
a[k][j]=0;
}
}*/
public static void main(String[] args) {
int [][]a={ {1,2,3}, {4,0,5}, {6,7,8}};
//方法1,用数组标记零元素的位置,空间复杂度O(MN)
/*int [][]b = new int[3][3];*/
//方法2,用两个数组分别标记零元素的行和列
boolean []row=new boolean[a.length];
boolean []col=new boolean[a[0].length];
print(a);
for(int i=0;i<a.length;i++){
for(int j=0; j<a[i].length; j++){
if(a[i][j]==0){
/*b[i][j]=1;*/
row[i]=true;
col[j]=true;
}
}
}
/*for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
if(b[i][j]==1){
SetZero(a,i,j);
}
}
}*/
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(row[i] || col[j]){
a[i][j]=0;
}
}
}
print(a);
}
}
/*output example
1 2 3
4 0 5
6 7 8
1 0 3
0 0 0
6 0 8 */
将矩阵中为0的元素所在行列清零,布布扣,bubuko.com
原文地址:http://blog.csdn.net/dutsoft/article/details/26393071