IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode 841. Keys and Rooms -> 正文阅读

[数据结构与算法]leetcode 841. Keys and Rooms

题目意思是给了一个二维数组,比如[[1],[2],[3],[]]

数组[0]代表房间0里放的某个房间i的钥匙,比如房间0里放的房间1的钥匙。然后通过房间0里的钥匙去打开房间1,然后继续去拿钥匙。

该问题和密室逃脱一样或者以前的RPG单机游戏仙剑一样,打通某个任务才能解锁另外一个任务。

求能不能访问所有的房间。

读完题目第一个想法就是这个题目和图的遍历很想哦。

房间0相当于图的顶点vertex,房间0里的钥匙相当于顶点的邻居节点。

得到了邻居节点(钥匙)才能访问其他的顶点(房间)。

然后最后的问题就转换成了最后一共访问的节点(房间)是不是全部的节点(房间)。

代码也千篇一律的用bfs,用queue来存储已经访问的和下一步要访问的节点(房间), unordered_set来存储访问过的节点(房间)。

最后对比下访问过的房间数目和总的房间数目是否一样。

代码如下:

class Solution {
public:
? ? bool canVisitAllRooms(vector<vector<int>>& rooms) {
? ? ? ? //That is a typicall graphic issue.
? ? ? ? //enter the room means access the vertex and the key means the neighber of vertex.
? ? ? ? //access the room means enter the queue.
? ? ? ? //convert the issue to check whether the size of traveled node is same as the size of defined number os rooms(vertex)
? ? ? ? if(rooms.size() == 0 || rooms.size() == 1)
? ? ? ? ? ? return true;
? ? ? ??
? ? ? ? queue<int> myqueue;
? ? ? ? unordered_set<int> accessedRoom;
? ? ? ??
? ? ? ? myqueue.push(0);
? ? ? ? accessedRoom.insert(0);
? ? ? ??
? ? ? ? while(!myqueue.empty()) {
? ? ? ? ? ? int roomID = myqueue.front();
? ? ? ? ? ? myqueue.pop();
? ? ? ? ? ??
? ? ? ? ? ? for(auto &key: rooms[roomID]) {
? ? ? ? ? ? ? ? if(accessedRoom.find(key) != accessedRoom.end())
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? else{
? ? ? ? ? ? ? ? ? ? myqueue.push(key);
? ? ? ? ? ? ? ? ? ? accessedRoom.insert(key);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return accessedRoom.size() == rooms.size();
? ? }
};

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:57:54  更:2022-02-05 21:58:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:23:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码