此题想要根据每个房间的钥匙来走到下一个房间,接着去开其他房间。我的做法是采用类似于BFS的形式用一个队列来遍历所有的房间,如果这个房间走过了就标识为走过,如果没有,则不标识。最后看看是不是全部都走过了。此题较简单,主要就是采用一个队列的方式来遍历房间。
代码如下:
class Solution(object):
def canVisitAllRooms(self, rooms):
"""
:type rooms: List[List[int]]
:rtype: bool
"""
if len(rooms) == 0 or len(rooms) == 1:
return True
sign = [False for _ in range(len(rooms))]
sign[0] = True
q = []
for i in rooms[0]:
q.append(i)
sign[i] = True
while(len(q)!=0):
temp = q.pop(0)
temp_list = rooms[temp]
for ii in temp_list:
if sign[ii]:
continue
else:
q.append(ii)
sign[ii] = True
for j in sign:
if j == False:
return j
return True