news 2026/6/9 20:00:41

钥匙和房间

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
钥匙和房间

本文参考代码随想录

有 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 号房间

思路

本题是一个有向图搜索全路径的问题。 只能用深搜(DFS)或者广搜(BFS)来搜。

dfs

classSolution:defcanVisitAllRooms(self,rooms:List[List[int]])->bool:defdfs(rooms,key,visited):ifvisited[key]==True:returnvisited[key]=Truekeys=rooms[key]fornext_keyinkeys:dfs(rooms,next_key,visited)visited=[False]*len(rooms)dfs(rooms,0,visited)forvinvisited:ifnotv:returnFalsereturnTrue

bfs

classSolution:defcanVisitAllRooms(self,rooms:List[List[int]])->bool:defbfs(start,rooms,visited):q=collections.deque()q.append(start)visited[start]=Truewhileq:cur=q.popleft()next_keys=rooms[cur]fornext_keyinnext_keys:ifvisited[next_key]==False:visited[next_key]=Trueq.append(next_key)visited=[False]*len(rooms)bfs(0,rooms,visited)forvinvisited:ifnotv:returnFalsereturnTrue
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 17:16:45

AUTOSAR中CAN控制器驱动开发实战案例

AUTOSAR中CAN控制器驱动开发实战:从硬件抽象到通信链贯通当汽车ECU遇上标准化通信:为什么我们需要AUTOSAR CAN驱动?现代汽车里藏着上百个电子控制单元(ECU),它们像一个个“智能器官”——发动机管理、刹车系…

作者头像 李华
网站建设 2026/6/7 1:39:14

CMSIS底层初始化流程详解:系统学习手册

深入理解CMSIS底层初始化:从启动到main的每一步你有没有遇到过这样的情况?代码烧录成功,下载器能连上,但单片机就是“不干活”——LED不闪、串口没输出。查了一圈外设配置都没问题,最后发现原来是系统时钟没配对&#…

作者头像 李华
网站建设 2026/6/9 19:46:51

ego1开发板大作业vivado实现交通灯控制系统图解说明

ego1开发板实战:用FPGA打造一个会“思考”的交通灯系统你有没有想过,路口那几盏看似简单的红绿灯,其实背后藏着一套精密的“大脑”?它要准确判断何时变灯、确保两个方向不会同时放行、还要能应对突发状况——比如救护车经过时临时…

作者头像 李华
网站建设 2026/6/7 1:29:44

vivado2020.2安装教程:Windows系统入门必看

Vivado 2020.2 安装实战全解析:从零搭建高效 FPGA 开发环境 你是不是也曾在尝试安装 Vivado 的时候,被闪退、驱动失败、许可证无效等问题搞得焦头烂额?明明按照官网步骤一步步来,结果还是“卡在最后一步”。别急——这并不是你的…

作者头像 李华
网站建设 2026/6/9 13:47:03

AI原生应用领域:幻觉缓解的创新解决方案

AI原生应用领域:幻觉缓解的创新解决方案关键词:AI原生应用、幻觉缓解、创新解决方案、人工智能、自然语言处理摘要:本文聚焦于AI原生应用领域中幻觉问题的缓解,首先介绍了AI幻觉的背景知识,包括目的、预期读者等内容。…

作者头像 李华