73. 矩阵置零
- 原题链接:
- 完成情况:
- 解题思路:
- 解法一:构造一个同等规模的二维数组,即所谓的m*n
- 解法二: int row[] = new int[m]; int col[] = new int[n];
- 解法三:常数量级
- 参考代码:
原题链接:
73. 矩阵置零
https://leetcode.cn/problems/set-matrix-zeroes/
完成情况:
解题思路:
解法一:构造一个同等规模的二维数组,即所谓的m*n
解法二: int row[] = new int[m]; int col[] = new int[n];
所谓m+n,则是你可以构建一个:
int row[] = new int[m];
int col[] = new int[n];
来记录哪几行,哪几列需要被设置成0
解法三:常数量级
即,你在二维数组中找到一个等于0的位置,用两个参数,row/col来记录他的位置,然后就和上面的解法二一样,只不过这次是将所有统计结果都记录到row/col这两个看似的一维数组中。
参考代码:
package 中等题;public class __73矩阵置零__普通版 {/**** @param matrix*/public void setZeroes(int[][] matrix) {int helper[][] = matrix;for(int i=0;i< matrix.length;i++){for (int j=0;j< matrix[0].length;j++){if (matrix[i][j] == 0){//设置的是辅助数组SetZero(helper,i,j);break;}}}for(int i=0;i< matrix.length;i++) {for (int j = 0; j < matrix[0].length; j++) {matrix[i][j] = helper[i][j];}}}/**** @param helper* @param m* @param n*/private void SetZero(int helper[][], int m, int n) {for (int i=0;i< helper.length;i++){helper[i][n] = 0;}for (int i=0;i< helper.length;i++){helper[m][i]= 0;}}}