LeetCode【73】矩阵置零

题目:
LeetCode【73】矩阵置零_第1张图片

思路:
1、从题目看,在遍历数组的同时,如果遍历到0,回溯i,j,将其对应的行列变为0。不能变更后面的,后面遍历整个数组都将变成0.
2、需要额外的空间存储要变0的标记位,最后将数组需要的位置设置为0即可。
3、额外需要两个set记录行列即可。

代码:

public void setZeroes(int[][] matrix) {
    int rows = matrix.length;
    int columns = matrix[0].length;

    Set<Integer> markRows = new HashSet<>();
    Set<Integer> markColumns = new HashSet<>();

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            if (matrix[i][j] == 0) {
                markRows.add(i);
                markColumns.add(j);
            }
        }
    }

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            if (markRows.contains(i) || markColumns.contains(j)) {
                matrix[i][j] = 0;
            }
        }
    }
}

你可能感兴趣的:(leetcode,矩阵,算法)