文章目录
- 题目描述
- 题解思路
- 题解代码
题目描述
题解思路
遍历矩阵,若当前元素为零,则将该行和该列的第一个元素置零
遍历第一行,若当前元素为零,则将当前列置零
遍历第一列,若当前元素为零,则将当前行置零
题解代码
func setZeroes(matrix [][]int) {
m, n := len(matrix) - 1, len(matrix[0]) - 1
for i := m; i >= 0; i-- {
if matrix[i][0] == 0 {
defer func() {
for i := m; i >= 0; i-- {
matrix[i][0] = 0
}
}()
break
}
}
for i := n; i >= 0; i-- {
if matrix[0][i] == 0 {
defer func() {
for i := n; i >= 0; i-- {
matrix[0][i] = 0
}
}()
break
}
}
for i := m; i > 0; i-- {
for j := n; j > 0; j-- {
if matrix[i][j] == 0 {
matrix[i][0] = 0
matrix[0][j] = 0
}
}
}
for i := m; i > 0; i-- {
if matrix[i][0] == 0 {
for j := n; j > 0; j-- {
matrix[i][j] = 0
}
}
}
for i := n; i > 0; i-- {
if matrix[0][i] == 0 {
for j := m; j > 0; j-- {
matrix[j][i] = 0
}
}
}
}