File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ var DRCS = [][]int {
2+ {0 , - 1 ,},
3+ {0 , 1 ,},
4+ {- 1 , 0 ,},
5+ {1 , 0 ,},
6+ }
7+
8+ func numIslands (grid [][]byte ) int {
9+ visited := make ([][]bool , len (grid )) // S(n) = O(n)
10+ for i , row := range grid {
11+ visited [i ] = make ([]bool , len (row ))
12+ }
13+ ans := 0
14+ stack := [][]int {}
15+ for i , row := range grid {
16+ for j , c := range row {
17+ if visited [i ][j ] || c == '0' {
18+ continue
19+ }
20+ ans ++
21+ visited [i ][j ] = true
22+ stack = append (stack , []int {i , j })
23+ for len (stack ) != 0 { // T(n) = O(n)
24+ u := stack [len (stack ) - 1 ]
25+ stack = stack [: len (stack ) - 1 ]
26+ for _ , drc := range DRCS {
27+ x := u [0 ] + drc [0 ]
28+ y := u [1 ] + drc [1 ]
29+ if x == - 1 || x == len (grid ) || y == - 1 || y == len (row ) ||
30+ grid [x ][y ] == '0' || visited [x ][y ] {
31+ continue
32+ }
33+ visited [x ][y ] = true
34+ stack = append (stack , []int {x , y })
35+ }
36+ }
37+ }
38+ }
39+ return ans
40+ }
You can’t perform that action at this time.
0 commit comments