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

    841. 钥匙和房间

    方法一:深度优先搜索

    思路及解法

    我们可以使用深度优先搜索的方式遍历整张图,统计可以到达的节点个数,并利用数组 vis 标记当前节点是否访问过,以防止重复访问。

    class Solution {
    public:
        vector<int> vis;
        int num;
    
        void dfs(vector<vector<int> >& rooms, int x) {
            vis[x] = true;
            num++;
            for (int i = 0; i < rooms[x].size(); i++)
                if (!vis[rooms[x][i]])
                    dfs(rooms, rooms[x][i]);
        }
    
        bool canVisitAllRooms(vector<vector<int> >& rooms) {
            int n = rooms.size();
            num = 0;
            vis.resize(n);
            dfs(rooms, 0);
            return num == n;
        }
    };

     

    复杂度分析

    时间复杂度:O(n+m),其中 n 是房间的数量,m 是所有房间中的钥匙数量的总数。

    空间复杂度:O(n),其中 n是房间的数量。主要为栈空间的开销。

     

    方法二:广度优先搜索


    思路及解法

    我们也可以使用广度优先搜索的方式遍历整张图,统计可以到达的节点个数,并利用数组vis 标记当前节点是否访问过,以防止重复访问。

     

    class Solution {
    public:
        bool canVisitAllRooms(vector<vector<int> >& rooms) {
            int n=rooms.size();
            int num=0;
            queue<int>que;
            que.push(0);
            vector<bool>vis(n);
            vis[0]=true;
            while (!que.empty())
            {
                int front = que.front();
                que.pop();
                num++;
                for (int i = 0; i < rooms[front].size(); i++)
                {
                    
                    if(!vis[rooms[front][i]]){
                        que.push(rooms[front][i]);
                        vis[rooms[front][i]]=true;
                    }
                }
            }
            return num==n;
        }
    };

     

    复杂度分析

    时间复杂度:O(n+m),其中 n 是房间的数量,m 是所有房间中的钥匙数量的总数。

    空间复杂度:O(n),其中 n是房间的数量。主要为栈空间的开销。

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13735418.html

  • 相关阅读:
    PY个树状数组
    PY 个板子计划【雾
    PY个欧拉筛
    【NOI2007】项链工厂 ——老题新做.jpg
    Min-Max 容斥的证明
    51nod 1963 树上Nim
    ●BZOJ 3566 [SHOI2014]概率充电器
    ●BZOJ 3640 JC的小苹果
    ●BZOJ 1444 [Jsoi2009]有趣的游戏
    ●Joyoi Dotp 驱逐猪猡
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/13735418.html
Copyright © 2011-2022 走看看