有一个m*n的矩阵,如果上面某个位置的值是0,则将其整个行与整个列都设为0
思路:先用两个列表记录哪个行或列的值为0, 然后遍历matrix,如果某位置的行或列为0,则该位置为0
class Solution:
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
# 5 star,
cols = [0 for _ in range(len(matrix))]
rows = [0 for _ in range(len(matrix[0]))]
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
cols[i], rows[j] = 1, 1
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if cols[i] or rows[j]:
matrix[i][j] = 0
Go:
// 5 star, 用两个切片分别记录各行和列是否有0
func setZeroes(matrix [][]int) {
cols := make([]int, len(matrix))
rows := make([]int, len(matrix[0]))
for i, _ := range matrix {
for j, _ := range matrix[0] {
if matrix[i][j] == 0 {
cols[i] = 1
rows[j] = 1
}
}
}
for i, _ := range matrix {
for j, _ := range matrix[0] {
if cols[i] == 1 || rows[j] == 1 {
matrix[i][j] = 0
}
}
}
}