File tree 1 file changed +48
-0
lines changed
1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ // func canVisitAllRooms(rooms [][]int) bool {
4
+ // if len(rooms) == 0 {
5
+ // return true
6
+ // }
7
+ // var visited []bool = make([]bool, len(rooms))
8
+ // depthFirstSearch(0, rooms, visited)
9
+ // for i := 0; i < len(rooms); i++ {
10
+ // if !visited[i] {
11
+ // return false
12
+ // }
13
+ // }
14
+ // return true
15
+ // }
16
+
17
+ // func depthFirstSearch(index int, rooms [][]int, visited []bool) {
18
+ // visited[index] = true
19
+ // for _, n := range rooms[index] {
20
+ // if !visited[n] {
21
+ // depthFirstSearch(n, rooms, visited)
22
+ // }
23
+ // }
24
+ // }
25
+
26
+ // breadth fist search
27
+ func canVisitAllRooms (rooms [][]int ) bool {
28
+ visited := make ([]bool , len (rooms ))
29
+ visited [0 ] = true
30
+ q := []int {0 }
31
+ locked := len (rooms ) - 1
32
+
33
+ for len (q ) > 0 && locked != 0 {
34
+ v := q [0 ]
35
+ q = q [1 :]
36
+
37
+ for _ , keys := range rooms [v ] {
38
+ if visited [keys ] {
39
+ continue
40
+ }
41
+ q = append (q , keys )
42
+ visited [keys ] = true
43
+ locked --
44
+ }
45
+ }
46
+
47
+ return locked == 0
48
+ }
You can’t perform that action at this time.
0 commit comments