841.钥匙和房间
深度上每一层的数据池需要提取再交给下一层,下一层的数据池被上一层数据池中被选择的数决定,画数据池的图结构。
class Solution {
public boolean canVisitAllRooms(List<List<Integer>> rooms) {
ArrayList<Boolean> visited = new ArrayList<>(rooms.size());
for(int i = 0; i < rooms.size(); i++){
visited.add(false);
}
dfs(rooms, 0, visited);
for(boolean flag : visited){
if(flag == false){
return false;
}
}
return true;
}
void dfs(List<List<Integer>> rooms, int key, ArrayList<Boolean> visited){
if(visited.get(key) == true){
return;
}
visited.set(key, true);
for(int i : rooms.get(key)){
dfs(rooms, i, visited);
}
}
}