Wednesday, December 5, 2018

841. Keys and Rooms


Version #1 Classical DFS
Time O(n)
Space O(depth of stack)

95.09 %
class Solution {
    public boolean canVisitAllRooms(List<List<Integer>> rooms) {
if (rooms == null) {
return true;
}
// We enter a root and pick up all keys
Set<Integer> visited = new HashSet<>();
int N = rooms.size();
dfs(rooms, visited, 0);
return visited.size() == rooms.size();
}

private void dfs(List<List<Integer>> rooms, Set<Integer> visited, int curr) {
visited.add(curr);
for (int next : rooms.get(curr)) {
if (!visited.contains(next)) {
dfs(rooms, visited, next);
}
}
}
}

No comments:

Post a Comment