Leetcode——矩阵置零

Posted Yawn,

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——矩阵置零相关的知识,希望对你有一定的参考价值。

1. 矩阵置零

(1)朴素(Set)

思路:

  • 第一次循环,存储存在元素为0的行数和列数
  • 第二次循环,将存在元素0的行列全部置0
  • 时间复杂度O(m*n)
    空间复杂度O(m+n)
class Solution {
    public void setZeroes(int[][] matrix) {
        Set<Integer> row = new HashSet<>();
        Set<Integer> col = new HashSet<>();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j] == 0) {
                    row.add( i);
                    col.add(j);
                }
            }
        }

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (row.contains(i) || col.contains(j)) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}

(2)朴素(数组)

class Solution {
    public void setZeroes(int[][] matrix) {
        boolean[] row = new boolean[matrix.length];
        boolean[] col = new boolean[matrix[0].length];
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (matrix[i][j] == 0) {
                    row[i] = true;
                    col[j] = true;
                }
            }
        }

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                if (row[i] == true || col[j] == true) {
                    matrix[i][j] = 0;
                }
            }
        }
    }
}

以上是关于Leetcode——矩阵置零的主要内容,如果未能解决你的问题,请参考以下文章

p99 矩阵置零(leetcode 73)

Leetcode——矩阵置零

Leetcode刷题Python73. 矩阵置零

leetcode-73 矩阵置零

leetcode73矩阵置零

Python描述 LeetCode 73. 矩阵置零