Question
There are
nrooms labeled from0ton - 1and all the rooms are locked except for room0. Your goal is to visit all the rooms. However, you cannot enter a locked room without having its key.When you visit a room, you may find a set of distinct keys in it. Each key has a number on it, denoting which room it unlocks, and you can take all of them with you to unlock the other rooms.
Given an array
roomswhererooms[i]is the set of keys that you can obtain if you visited roomi, returntrueif you can visit all the rooms, orfalseotherwise.
Solution
BFS,创建一个数组记录房间是否被访问。(用DFS搜素亦可。)
如果钥匙对应的房间已经访问过则跳过。
如果未访问过则记录为已访问并加入队列。
最后遍历一次访问状态,如果有没访问过的房间则返回false。反之返回true。
Code
1 | class Solution { |
