一、题目描述
二、示例
三、解题思路
我们先要确定这个实体(钥匙,口袋)的数据结构,因为钥匙用过一次之后就会插在门上,在下一次进入房间后不会把开过的钥匙再装在兜里,所以我们用队列来表示钥匙队列,然后将开过门的钥匙存在一个数组里面,每次将钥匙装入兜之前进行判断。
四、代码
var canVisitAllRooms = function(arr) {
var keyQueue = []
var roomArr = [1]
keyQueue = arr[0]
while (keyQueue.length > 0) {
var keyTemp = keyQueue.shift()
var roomKey = arr[keyTemp]
roomArr[keyTemp] = keyTemp
roomKey.forEach((key) => {
if (!keyQueue.includes(key)) {
if (!roomArr[key]) {
keyQueue.push(key)
}
}
})
}
var roomFilter = roomArr.filter((s) => {
return s
})
if (roomFilter.length === arr.length) {
return true
} else {
return false
}
}