可以用兩個標記數組分別記錄每一行和每一列是否有零出現。
首先遍歷該數組一次,如果某個元素為?0,那么就將該元素所在的行和列所對應標記數組的位置置為?true。然后再次遍歷該數組,用標記數組更新原數組。
class Solution {public void setZeroes(int[][] matrix) {int m=matrix.length;int n=matrix[0].length;boolean[] r=new boolean[m];boolean[] c=new boolean[n];for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(matrix[i][j]==0){r[i]=true;c[j]=true;}}}for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(r[i]||c[j]){matrix[i][j]=0;}}}}
}