Skip to content

Commit 3b72648

Browse files
committed
Create 841-keys-and-rooms.rs
1 parent 3b072d7 commit 3b72648

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

841-keys-and-rooms.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
pub fn can_visit_all_rooms(rooms: Vec<Vec<i32>>) -> bool {
2+
use std::collections::HashSet;
3+
let mut mmp: HashSet<i32> = HashSet::new();
4+
pub fn dfs(mmp: &mut HashSet<i32>, rooms: &Vec<Vec<i32>>, key: i32) {
5+
let keys = rooms.get(key as usize);
6+
if keys == None { return }
7+
for key in keys.unwrap() {
8+
let tmp = mmp.get(key);
9+
if tmp.is_some() { continue }
10+
mmp.insert(*key);
11+
dfs(mmp, rooms, *key);
12+
}
13+
}
14+
dfs(&mut mmp, &rooms, 0);
15+
let mut mmp = mmp.into_iter().collect::<Vec<i32>>();
16+
mmp.sort();
17+
(1..rooms.len() as i32).collect::<Vec<i32>>() == mmp
18+
}
19+
20+
fn main() {
21+
println!("{:?}", can_visit_all_rooms(vec![vec![1], vec![2], vec![3], vec![]]));
22+
println!("{:?}", can_visit_all_rooms(vec![vec![1,3], vec![3,0,1], vec![2], vec![0]]));
23+
}

0 commit comments

Comments
 (0)