841.钥匙和房间

/**
 * @param {number[][]} rooms
 * @return {boolean}
 */
var canVisitAllRooms = function (rooms) {
    let visited = new Set() // 访问过的房间

    // 模拟开房间过程
    function visit(curRoomNum) {
        // 递归结束条件,如果访问到原来访问过的,说明死循环了
        if (visited.has(curRoomNum)) {
            return
        }
        visited.add(curRoomNum) // 记录访问了该房间
        const keys = rooms[curRoomNum] // 房间里的钥匙
        // 每条线路都走一遍
        for (let i = 0; i < keys.length; i++) {
            visit(keys[i])
        }
    }

    // 从0号房间开始
    visit(0)

    console.log(visited)

    return visited.size === rooms.length
};