[73] LeetCodeゼロ行列スペースO(1)

タイトル

トピックポータル:ポータル(こちらをクリック)
ここに画像を挿入説明

問題の解決策

  1. スペースの複雑さはO(MN)ソリューションであるアウトだと思うのは簡単です
  2. O(M + N)は比較的簡単な解決策であり、空間の複雑さは、2つの配列は、mおよび長さnは、行または列を介して0に表示されるように作成します
  3. 空間複雑度が2に基づいて、溶液中のO(1)であり、マトリックス中のこの配列は、記録します

私の考え

  1. 第0見出し、このカラムを通過し、このラインは、行と列の0として記録されている
    ここに画像を挿入説明
    最初の行第2列、1行2列目に最初に見つかった0、それは次のように記録されています行と列
    ここに画像を挿入説明
  2. 、見下ろしキープそれぞれ0を発見し、それがこの行に記録され、
    ここに画像を挿入説明
  3. 良い記録した後、最初のゼロの列
    ここに画像を挿入説明
  4. そして、ゼロライン
    ここに画像を挿入説明

コード

class Solution {
    public void setZeroes(int[][] matrix) {
        int rows = matrix.length;
        int cols = matrix[0].length;
        int recRow = -1;
        int recCol = -1;
        // 把有 0 的行和列都记录到 recRow 和 recCol 中
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (matrix[i][j] == 0) {
                    if (recRow == -1 && recCol == -1) {
                        recRow = i;
                        recCol = j;
                    } else {
                        matrix[recRow][j] = 0;
                        matrix[i][recCol] = 0;
                    }
                }
            }
        }
        // 如果矩阵中没有 0 ,就直接返回
        if (recCol == -1 && recRow == -1) return;
        // 将 recRow 记录的所有的行设置为 0
        for (int j = 0; j < cols; j++) {
            if (j != recCol) {
                if (matrix[recRow][j] == 0) {
                    for (int i = 0; i < rows; i++) {
                        matrix[i][j] = 0;
                    }
                } else {
                    matrix[recRow][j] = 0;
                }
            }
        }
        // 将 recCol 记录的所有的列设置为 0
        for (int i = 0; i < rows; i++) {
            if (i != recRow) {
                if (matrix[i][recCol] == 0) {
                    for (int j = 0; j < cols; j++) {
                        matrix[i][j] = 0;
                    }
                } else {
                    matrix[i][recCol] = 0;
                }
            }
        }

    }
}

ここに画像を挿入説明

公開された151元の記事 ウォンの賞賛148 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/qq1515312832/article/details/104476807