码迷,mamicode.com
首页 > 其他好文 > 详细

将矩阵中为0的元素所在行列清零

时间:2014-05-21 16:16:56      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:算法   java   笔试   

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

将矩阵中为0的元素所在行列清零

标签:算法   java   笔试   

原文地址:http://blog.csdn.net/dutsoft/article/details/26393071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!