package leetcodePractice; /** * 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。 * 请使用原地算法。 * 原地算法我的理解就是直接覆盖掉原来的数组就行 */ public class Practice2 { public static void main(String[] args) { int[][] array = new int[][]{{1,1,1},{1,0,1},{1,1,1}}; setZeroes(array); } public static void setZeroes(int[][] matrix){ //得到二维数组的行和列 int row = matrix.length; int col = matrix[0].length; //将首行和首列都定义为布尔类型的数组 boolean[] row_first = new boolean[row]; boolean[] col_first = new boolean[col]; //确定二维数组中为0的位置,将其置为true for (int i = 0; i < row; i++){ for (int j = 0; j <col; j++){ if (matrix[i][j] == 0){ row_first[i] = true; col_first[j] = true; } } } //将为true的地方,行和列都置为0 for (int i = 0; i < row; i++){ for (int j = 0; j <col; j++){ if (row_first[i] || col_first[j]){ matrix[i][j] = 0; } System.out.print(matrix[i][j] + "\t"); } System.out.println(); } } }
关于空间分析我也不会,然后这个是最笨的办法,