1. 程式人生 > >程式設計題13

程式設計題13

請編寫一個演算法,若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; } } }