Skip to content

Commit 3efedb4

Browse files
committed
leetcode
1 parent 200a990 commit 3efedb4

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

KeysAndRooms/keys_and_rooms.go

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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+
}

0 commit comments

Comments
 (0)