LeetCode----- 钥匙和房间(javascript解法)

一、题目描述

在这里插入图片描述

二、示例

在这里插入图片描述

三、解题思路

我们先要确定这个实体(钥匙,口袋)的数据结构,因为钥匙用过一次之后就会插在门上,在下一次进入房间后不会把开过的钥匙再装在兜里,所以我们用队列来表示钥匙队列,然后将开过门的钥匙存在一个数组里面,每次将钥匙装入兜之前进行判断。

四、代码
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
    }
}
五、题目结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值