File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 1
1
package p_01_matrix
2
+
3
+ func updateMatrix (matrix [][]int ) [][]int {
4
+ m , n := len (matrix ), len (matrix [0 ])
5
+ MIN := m * n
6
+ // 根据 左方 和 上方 的格子,更新 (i,j)
7
+ for i := 0 ; i < m ; i ++ {
8
+ for j := 0 ; j < n ; j ++ {
9
+ if matrix [i ][j ] == 0 {
10
+ continue
11
+ }
12
+ matrix [i ][j ] = MIN
13
+ if 0 <= i - 1 {
14
+ matrix [i ][j ] = min (matrix [i ][j ], matrix [i - 1 ][j ]+ 1 )
15
+ }
16
+ if 0 <= j - 1 {
17
+ matrix [i ][j ] = min (matrix [i ][j ], matrix [i ][j - 1 ]+ 1 )
18
+ }
19
+ }
20
+ }
21
+ // 根据 右方 和 下方 的格子,更新 (i,j)
22
+ for i := m - 1 ; 0 <= i ; i -- {
23
+ for j := n - 1 ; 0 <= j ; j -- {
24
+ if matrix [i ][j ] == 0 {
25
+ continue
26
+ }
27
+ if i + 1 < m {
28
+ matrix [i ][j ] = min (matrix [i ][j ], matrix [i + 1 ][j ]+ 1 )
29
+ }
30
+ if j + 1 < n {
31
+ matrix [i ][j ] = min (matrix [i ][j ], matrix [i ][j + 1 ]+ 1 )
32
+ }
33
+ }
34
+ }
35
+ return matrix
36
+ }
37
+
38
+ func min (a , b int ) int {
39
+ if a < b {
40
+ return a
41
+ }
42
+ return b
43
+ }
You can’t perform that action at this time.
0 commit comments