51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package top100liked
|
|
|
|
// https://leetcode.cn/problems/set-matrix-zeroes/description/?envType=study-plan-v2&envId=top-100-liked
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func setZeroes(matrix [][]int) {
|
|
rowLength := len(matrix)
|
|
columeLength := len(matrix[0])
|
|
|
|
rowsHaveZero := make([]bool, rowLength)
|
|
columesHaveZero := make([]bool, columeLength)
|
|
|
|
for rowIdx, row := range matrix {
|
|
for columeIdx := range row {
|
|
if matrix[rowIdx][columeIdx] == 0 {
|
|
if !columesHaveZero[columeIdx] {
|
|
for i := range rowIdx {
|
|
matrix[i][columeIdx] = 0
|
|
}
|
|
}
|
|
if !rowsHaveZero[rowIdx] {
|
|
for i := range columeIdx {
|
|
matrix[rowIdx][i] = 0
|
|
}
|
|
}
|
|
rowsHaveZero[rowIdx] = true
|
|
columesHaveZero[columeIdx] = true
|
|
}
|
|
if rowsHaveZero[rowIdx] || columesHaveZero[columeIdx] {
|
|
matrix[rowIdx][columeIdx] = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestS18(t *testing.T) {
|
|
var matrix [][]int
|
|
|
|
matrix = [][]int{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}
|
|
setZeroes(matrix)
|
|
fmt.Printf("%+v\n", matrix)
|
|
|
|
matrix = [][]int{{0, 1, 2, 0}, {3, 4, 5, 2}, {1, 3, 1, 5}}
|
|
setZeroes(matrix)
|
|
fmt.Printf("%+v\n", matrix)
|
|
}
|