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