请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int[]mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。
测试样例: [[1,2,3],[0,1,2],[0,0,1]] 返回:[[0,0,3],[0,0,0],[0,0,0]] https://www.nowcoder.com/practice/1b58fbb97bc048b8a4438173c5392167?tpId=85&&tqId=29882&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking
import java.util.*; public class Clearer { public int[][] clearZero(int[][] mat, int n) { int[][] copymat=new int[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ copymat[i][j]=mat[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(copymat[i][j]==0){ changeValue(mat,i,j,n); } } } return mat; } public void changeValue(int[][] mat,int i,int j,int n){ int p=i; for(i=0;i<n;i++){ mat[i][j]=0; mat[p][i]=0; } } }