0
点赞
收藏
分享

微信扫一扫

0073. 矩阵置零

鲤鱼打个滚 2023-07-06 阅读 45

73. 矩阵置零

原题链接:

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;
        }
    }


}

举报

相关推荐

0 条评论