zoukankan      html  css  js  c++  java
  • 841. 钥匙和房间

    有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。
    在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,...,N-1] 中的一个整数表示,其中 N = rooms.length。
    钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进入每个房间返回 true,否则返回 false。

    示例 1:
    输入: [[1],[2],[3],[]]
    输出: true
    解释:
    我们从 0 号房间开始,拿到钥匙 1。
    之后我们去 1 号房间,拿到钥匙 2。
    然后我们去 2 号房间,拿到钥匙 3。
    最后我们去了 3 号房间。
    由于我们能够进入每个房间,我们返回 true。

    示例 2:
    输入:[[1,3],[3,0,1],[2],[0]]
    输出:false
    解释:我们不能进入 2 号房间。
    提示:

    1 <= rooms.length <= 1000
    0 <= rooms[i].length <= 1000
    所有房间中的钥匙数量总计不超过 3000。
    通过次数39,061提交次数59,811
    该题就是的思路很简单,就是对每一个房间的钥匙,遍历下去,查看可以打开哪些房间并记录,最后判断打开的房间数是否和房间数相等即可,用深度优先搜索即可解决
    `
    public boolean canVisitAllRooms(List<List> rooms) {
    boolean[] vis;
    int num;
    int n = rooms.size();
    num = 0;
    vis = new boolean[n];
    dfs(rooms, 0);
    return num == n;
    }
    public void dfs(List<List> rooms, int x) {
    vis[x] = true;
    num++;
    for (int it : rooms.get(x)) {
    if (!vis[it]) {
    dfs(rooms, it);
    }
    }
    }

    `
    参考:leetcode官方题解:https://leetcode-cn.com/problems/keys-and-rooms/solution/yao-chi-he-fang-jian-by-leetcode-solution/

  • 相关阅读:
    Linux 中文件名颜色所代表的属性
    time manage
    NoClassDefFoundError
    swagger在线文档
    2020.8.18
    spring jpa data的关键字
    2020.8.6
    spring data jpa的报错Can not set int field XXX to null value
    deadlock found when trying to get lock ;try restarting transaction
    查找-斐波那契
  • 原文地址:https://www.cnblogs.com/kaiwei123/p/13593665.html
Copyright © 2011-2022 走看看