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