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) }