题目
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
示例
示例 1:
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
示例 2:
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
思路
- 第一次遍历将元素为零的行列的下标分别存到两个集合中
- 对于行需要变为零的元素直接matrix[i] = [0] * len(matrix[i])
- 对于列需要变为零的元素我们需要双重遍历,第一个for遍历所有行,第二个行遍历之前存过的列下标即可
题解
class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: row, clo = set(), set() for i in range(len(matrix)): for j in range(len(matrix[0])): if matrix[i][j] == 0: row.add(i) clo.add(j) for i in row: matrix[i] = [0] * len(matrix[i]) for i in range(len(matrix)): for j in clo: matrix[i][j] = 0