矩阵置零(两种方法)

矩阵置零

给定一个m×n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。

public class 矩阵置零 {
    
    

	public static void main(String[] args) {
    
    
		int array_1[][] = {
    
    
						{
    
    1,1,1},
						{
    
    1,0,1},
						{
    
    1,1,1}};
		
		int array_2[][] = {
    
    
						{
    
    0,1,2,0},
						{
    
    3,4,5,2},
						{
    
    1,3,0,5}};
		
		int array_3[][] = fun(array_2);
//		int array_3[][] = fun_1(array_2);
		for(int a[]:array_3) {
    
    
			for(int b:a) {
    
    
				System.out.print(b+"\t");
			}
			System.out.println();
		}
	}
	static int[][] fun(int array[][]){
    
    
		boolean m[] = new boolean[array.length];//行
		boolean n[] = new boolean[array[0].length];//列
		int i,j;
		for(i=0;i<array.length;i++) {
    
    
			for(j=0;j<array[i].length;j++) {
    
    
				if(array[i][j] == 0) {
    
    
					m[i] = true;
					n[j] = true;
				}
			}
		}
		for(i=0;i<array.length;i++) {
    
    
			for(j=0;j<array[i].length;j++) {
    
    
				if(m[i]||n[j]) {
    
    
					array[i][j] = 0;
				}
			}
		}
		return array;
	}
	
	static int[][] fun_1(int array[][]){
    
    
		boolean row = false;
		boolean col = false;
		for(int i=0;i<array.length;i++) {
    
    
			for(int j=0;j<array[i].length;j++) {
    
    
				if(array[i][j] == 0) {
    
    
					if(i==0) {
    
    
						row = true;
					}
					if(j==0) {
    
    
						col = true;
					}
					array[i][0] = array[0][j] = 0;
				}
			}
		}
		for(int i=1;i<array.length;i++) {
    
    
			for(int j=1;j<array[0].length;j++) {
    
    
				if(array[i][0] == 0 || array[0][j] == 0) {
    
    
						array[i][j] = 0;
				}
			}
		}
		if(row) {
    
    
			for(int i=0;i<array[0].length;i++) {
    
    
				array[0][i] = 0;
			}
		}
		if(col) {
    
    
			for(int i=0;i<array.length;i++) {
    
    
				array[i][0] = 0;
			}
		}
		return array;
	}
}

Guess you like

Origin blog.csdn.net/m0_46672781/article/details/120495054