原题链接

解题思路:

1.先遍历整个矩阵,记录为0的索引值,存放在字典中,字典的KEY为结构体,记录坐标
2.遍历字典,KEY为坐标结构体,根据特性来重置矩阵

golang示例代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
func setZeroes(matrix [][]int)  {
    m := len(matrix)
    n := len(matrix[0])
    dict := map[Point]struct{}{}
    for i := 0; i < m; i++ {
        for j := 0; j < n; j++ {
            if matrix[i][j] == 0 {
                p := Point{Row: i, Col: j}
                dict[p] = struct{}{}
            }
        }
    }
    for key, _ := range dict {
        // 所在列置为0
        for i := 0; i < m; i++ {
            matrix[i][key.Col] = 0
        }
        // 所在行置为0
        for j := 0; j < n; j++ {
            matrix[key.Row][j] = 0
        }
    }
}

// 定义一个结构体,记录索引位置
type Point struct {
    Row int
    Col int
}