程式設計題13
阿新 • • 發佈:2018-11-02
請編寫一個演算法,若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;
}
}
}