矩阵置零(两种方法)

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵置零(两种方法)相关的知识,希望对你有一定的参考价值。

矩阵置零

给定一个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;
	}
}

以上是关于矩阵置零(两种方法)的主要内容,如果未能解决你的问题,请参考以下文章

p99 矩阵置零(leetcode 73)

代码题(38)— 旋转图像矩阵置零

《LeetCode之每日一题》:280.矩阵置零

矩阵置零

LeetCode:矩阵置零73

Leetcode——矩阵置零