news 2026/8/11 9:51:25

钥匙和房间

作者头像

张小明

前端开发工程师

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/8/1 16:51:08

单词接龙问题

本文参考代码随想录 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列: 序列中第一个单词是 beginWord 。 序列中最后一个单词是 endWord 。 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。…

作者头像 李华
网站建设 2026/8/9 5:48:07

冗余连接II

本文参考代码随想录 在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。 输入一个有向图,该图由一个有…

作者头像 李华
网站建设 2026/8/6 17:21:32

Winhance v26.01.12 便携版:Windows 系统优化工具

Winhance v26.01.12 便携版是专为 Win10/Win11 打造的专业 Windows 系统优化工具,无需重装系统就能解决电脑卡顿、系统冗余等问题,帮助用户实现系统瘦身与性能提升,让新旧电脑都能拥有流畅运行体验,是 Windows 系统优化领域的实用…

作者头像 李华
网站建设 2026/7/27 5:43:34

STM32中I2C重入问题与中断处理图解说明

STM32中I2C重入问题与中断处理实战解析一个传感器读取失败的“灵异事件”你有没有遇到过这样的情况:系统运行几分钟都正常,突然一次温湿度数据跳变成0?或者日志里某个时间戳写进了错误的值?调试时用逻辑分析仪一抓——发现I2C总线…

作者头像 李华
网站建设 2026/8/10 5:02:39

基于STM32H7的串口不定长接收图解说明

一文搞懂STM32H7串口不定长接收:DMA 空闲中断的实战精髓 你有没有遇到过这样的场景? 设备通过串口发来一帧长度不固定的数据——可能是10字节的传感器采样,也可能是上百字节的配置命令。你用传统轮询方式处理,CPU占用飙到80%&am…

作者头像 李华
网站建设 2026/7/19 4:47:17

log_softmax和sigmoid防止溢出原理

1sum_softmax推理指数函数的输出永远最大只有 1,前面常量不涉及指数计算基本不会溢出。2 sigmoid的安全处理对于常见操作# 极易下溢出!如果 logits 很小,pred 变成 0,log(0) 报错 pred torch.sigmoid(logits) loss torch.nn.BCE…

作者头像 李华