File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 11package 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