public void setZeroes(int[][] matrix) {int n matrix.length,m matrix[0].length;boolean flagRow false,flagCol false;//如果第一列有0把flagCol转为truefor(int i 0;in;i){if(matrix[i][0] 0){flagCol true;}}//如果第一行有0把flagRow转为truefor(int i 0;in;i){if(matrix[0][i] 0){flagRow true;}}//将矩阵中除了第一行和第一列的0元素标记在矩阵中的第一行和第一列for(int i 1;i n; i){for(int j 1;jm;j){if(matrix[i][j]0){matrix[i][0] matrix[0][j] 0;}}}//将矩阵第一行和第一列的0元素按照行和列进行转换for(int i 1;i n; i){for(int j 1;jm;j){if(matrix[i][0]0 || matrix[0][j] 0){matrix[i][j]0;}}}//如果第一列元素有0元素if(flagCol){for(int j0;jn;j){matrix[j][0]0;}}//如果第一列元素有0元素if(flagRow){for(int i 0;im;i){matrix[0][i] 0;}}}时间复杂度O(nm)空间复杂度O(1)