题目描述
请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。
给定一个MxN的int[][]矩阵(C++中为vector<vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector<vector>),保证n小于等于300,矩阵中的元素为int范围内。
测试样例:
[[1,2,3],[0,1,2],[0,0,1]]
返回:[[0,0,3],[0,0,0],[0,0,0]]
public class Clearer { public int[][] clearZero(int[][] mat, int n) { // write code here boolean [] row = new boolean[mat.length]; boolean []culum = new boolean[mat[0].length]; for(int i=0;i<mat.length;i++){ for(int j=0; j<mat[0].length; j++){ if(mat[i][j] == 0){ row[i] = true; culum[j] = true; } } } for(int i=0;i<mat.length;i++){ for(int j=0; j<mat[0].length; j++){ if(row[i] || culum[j]){ mat[i][j]=0; } } } return mat; } public static void main(String[] args) { Clearer cl = new Clearer(); int[][] mat = cl.clearZero(new int[][]{{1,2,3},{4,0,6},{7,8,9}}, 3); for(int i=0; i<mat.length; i++){ for(int j=0; j<mat.length; j++){ System.out.print(mat[i][j] + " "); } System.out.println(); } } }