Leetcode-矩阵置零(原地算法)

52 阅读1分钟

标记的使用

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

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        # 获取矩阵的行数m和列数n
        m, n = len(matrix), len(matrix[0])
        
        # 创建两个布尔数组,用于记录哪些行和列需要置零
        row, col = [False] * m, [False] * n

        # 第一次遍历矩阵,标记出需要置零的行和列
        for i in range(m):
            for j in range(n):
                if matrix[i][j] == 0:
                    row[i] = col[j] = True
        
        # 第二次遍历矩阵,将需要置零的行和列全部置零
        for i in range(m):
            for j in range(n):
                if row[i] or col[j]:
                    matrix[i][j] = 0