Leetcode 841. 钥匙和房间 题解

题目链接:https://leetcode-cn.com/problems/keys-and-rooms/
在这里插入图片描述
在这里插入图片描述
用栈更好搞,只要有钥匙且没被遍历过的房间就入栈,每次取栈顶元素继续遍历。

代码如下:

class Solution {
public:
    bool canVisitAllRooms(vector<vector<int>>& rooms) {
        stack<int> s;
        bool vis[rooms.size()];
        fill(vis, vis + rooms.size(), 0);

        for(int i = 0; i < rooms[0].size(); i++) {
            s.push(rooms[0][i]);
        }
        vis[0] = true;
        while(!s.empty()) {
            int k = s.top();
            s.pop();
            if(!vis[k]) {
                vis[k] = true;
                for(int i = 0; i < rooms[k].size(); i++) {
                    if(!vis[rooms[k][i]]) s.push(rooms[k][i]);
                }
            }
        }

        for(int i = 0; i < rooms.size(); i++) {
            if(!vis[i]) {
                return false;
            }
        }
        return true;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42396397/article/details/106187700
今日推荐