题目:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
解题思路:遍历数组,记录为0的位置坐标。根据坐标依次将行、列变为0。
classSolution{publicvoidsetZeroes(int[][] matrix){//数组的行和列int D = matrix.length;int R = matrix[0].length;int num = D*R;//声明两个数组,记录位置int H[]=newint[num];int L[]=newint[num];int h =0;int l =0;for(int i=0;i<R;i++){for(int j=0;j<D;j++){if(matrix[j][i]==0){//记录坐标位置
H[h++]= j;
L[l++]= i;}}}int a =0;int b =0;//将行、列依次置为0while(a<h){int m = H[a++];for(int j=0;j<R;j++) matrix[m][j]=0;}while(b<l){int n = L[b++];for(int i=0;i<D;i++) matrix[i][n]=0;}}}