LeetCode-矩阵置零

题目

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

示例 1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]
示例 2:

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

我的题解

class Solution {
    public void setZeroes(int[][] matrix) {
        int row = matrix.length;
        int col = matrix[0].length;
        Set<Integer> rowSet = new HashSet<>();
        Set<Integer> colSet = new HashSet<>();
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (matrix[i][j] == 0) {
                    rowSet.add(i);
                    colSet.add(j);
                }
            }
        }
        Iterator<Integer> rowIterator = rowSet.iterator();
        int temp;
        while (rowIterator.hasNext()) {
            temp = rowIterator.next();
            for (int j = 0; j < col; j++) {
                matrix[temp][j] = 0;
            }
        }
        Iterator<Integer> colIterator = colSet.iterator();
        while (colIterator.hasNext()) {
            temp = colIterator.next();
            for (int j = 0; j < row; j++) {
                matrix[j][temp] = 0;
            }
        }
    }
}

官方题解

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

作者:力扣官方题解
链接:https://leetcode.cn/problems/set-matrix-zeroes/solutions/669901/ju-zhen-zhi-ling-by-leetcode-solution-9ll7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

思考

对我来说,记住了Set不能包含重复元素,因此我的Set集合的长度会比较小,但Set遍历还是在网上查了下,没有形成肌肉记忆,需要继续努力。
官方题解,确实更精巧一些!

posted @ 2025-06-17 09:51  尼兰  阅读(8)  评论(0)    收藏  举报