力扣 | 73. 矩阵置零

发布时间:2024年01月24日

在这里插入图片描述



public class Problem_73_MatrixToZero {
    public void setZeros(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        boolean flagRow = false;
        boolean flagCol = false;
        //先记录第一行本身是否包含0
        for (int i = 0; i < n; i++) {
            if (matrix[0][i] == 0) flagRow = true;
        }
        //先记录第一列本身是否包含0
        for (int i = 0; i < m; i++) {
            if (matrix[i][0] == 0) flagCol = true;
        }
        //用第一行和第一列记录
        for (int row = 0; row < m; row++) {
            for (int col = 0; col < n; col++) {
                if (matrix[row][col] == 0) {
                    matrix[row][0] = 0;
                    matrix[0][col] = 0;
                }
            }
        }
        //不能从0开始,上面记录的0会覆盖之前的值。
        for (int row = 1; row < m; row++) {
            for (int col = 1; col < n; col++) {
                if(matrix[row][0] == 0 ||  matrix[0][col]== 0){
                    matrix[row][col] = 0;
                }
            }
        }
        if(flagRow){
            for (int col = 0; col < n; col++) {
                matrix[0][col] = 0;
            }
        }
        if(flagCol){
            for (int row = 0; row < m; row++) {
                matrix[row][0] = 0;
            }
        }
    }
}

文章来源:https://blog.csdn.net/qq_37247026/article/details/135821887
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。