题目
给定一个 m*n
的矩阵,如果矩阵中有一个元素为 0,则需要将整行或整列设置为0。
解析
需要进行两次矩阵遍历操作。
- 统计需要需要置为0的行和列。
- 分别进行行和列的置 0 操作。
伪代码
row [m]bool
col [n]bool
for i<m
for j<n
if m[i][j] == 0
row[i]=true
col[j]=true
for i<m
for j<n
if row[i] || col[j]
m[i][j] == 0
代码
func setZeroes(matrix [][]int) {
m:=len(matrix)
n:=len(matrix[0])
row := make([]bool, m)
col := make([]bool, n)
for i:=0;i<m;i++ {
for j:=0;j<n;j++ {
if matrix[i][j] == 0 {
row[i]=true
col[j]=true
}
}
}
for i:=0;i<m;i++ {
for j:=0;j<n;j++ {
if row[i] || col[j] {
matrix[i][j]=0
}
}
}
}
image.png
后记
- 不分别进行行的列的置0,转为考虑,该点是否被置0,取决与 row 或 col。
网友评论