零矩阵

题目描述

题目来源于leetcode

编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

示例 1:

输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:

输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]

简要分析

定义一个新的结果数组result[ ][ ],将初始数组的值复制进去。访问初始数组的每一个元素,如果为0,就将结果数组中对应的行、列置为0。

代码

class Solution {
    public void setZeroes(int[][] matrix) {
		int hl = matrix.length;
		int vl = matrix[0].length;
		int[][] result = new int[hl][vl];
		for(int k=0;k<hl;k++) {
			result[k] = Arrays.copyOf(matrix[k], vl);
		}
		for(int i=0;i<hl;i++) {
			for(int j=0;j<vl;j++) {
				if(matrix[i][j]==0) {
					for(int m=0;m<vl;m++) {
						result[i][m] = 0;
					}
					for(int n=0;n<hl;n++) {
						result[n][j] = 0;
					}
				}
			}
		}
		for(int a=0;a<hl;a++) {
			matrix[a] = Arrays.copyOf(result[a], vl);
		}
    }
}

你可能感兴趣的:(leetcode,java)