73. 矩阵置零
2024/3/16小于 1 分钟
73. 矩阵置零
中等解法思路:首先通过遍历记录哪些行和列需要置 0,再遍历一次将 0 填充
Java
class Solution {
public void setZeroes(int[][] matrix) {
HashSet<Integer> rows = new HashSet<>();
HashSet<Integer> cols = new HashSet<>();
for (int r = 0; r < matrix.length; r++) {
for (int c = 0; c < matrix[0].length; c++) {
if (matrix[r][c] == 0) {
rows.add(r);
cols.add(c);
}
}
}
for (int r = 0; r < matrix.length; r++) {
for (int c = 0; c < matrix[0].length; c++) {
if (rows.contains(r)) {
matrix[r][c] = 0;
}
if (cols.contains(c)) {
matrix[r][c] = 0;
}
}
}
}
}Python
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
rows = set()
cols = set()
# 记录需要置零的行和列
for r in range(len(matrix)):
for c in range(len(matrix[0])):
if matrix[r][c] == 0:
rows.add(r)
cols.add(c)
# 将对应的行和列置零
for r in range(len(matrix)):
for c in range(len(matrix[0])):
if r in rows or c in cols:
matrix[r][c] = 0