给定一个rooms房间列表,rooms[i]代表第i个房间,每个房间里有几把钥匙,可以打开对应的rooms[j]等房间。初始0号房间开启,其余房间均关闭,问遍历完能否打开所有的房间。
使用dfs深度优先搜索。
class Solution:
def canVisitAllRooms(self,rooms):
visited={0} #只有0号房间可以打开,所以初始化只有0号房间的钥匙
def dfs(keys):
for key in keys:
if key not in visited:
visited.add(key) #将钥匙添加进去
dfs(rooms[key]) #遍历下一个钥匙打开的房间里的钥匙
dfs(rooms[0])
return len(visited)==len(rooms) #visited的钥匙的数量等于房间数量