leetcode-841-钥匙和房间 题解
题目描述
有 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 <= rooms.length <= 1000
0 <= rooms[i].length <= 1000
所有房间中的钥匙数量总计不超过 3000。
示例
示例 1:
输入: [[1],[2],[3],[]] 输出: true 解释: 我们从 0 号房间开始,拿到钥匙 1。 之后我们去 1 号房间,拿到钥匙 2。 然后我们去 2 号房间,拿到钥匙 3。 最后我们去了 3 号房间。 由于我们能够进入每个房间,我们返回 true。
示例 2:
输入:[[1,3],[3,0,1],[2],[0]] 输出:false 解释:我们不能进入 2 号房间。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/robot-return-to-origin
虽然归类为中等题型,但是意外地简单。类似链式结构,房间代表链表的节点,钥匙代表指向的下一节点。
首先想到的就是递归, 构造递归函数lock
, 开锁即进入房间。没去过的房间进行递归操作,否则不重复进入。
最后, 根据房间的数量和已使用钥匙集合的数量判断,若房间数大于钥匙数,则有没去过的房间, 返回False.
题解1:
执行用时:88ms,在所有Python3提交中击败了53.68%的用户
内存消耗:14.5MB,在所有Python3提交中击败了13.44%的用户
class Solution: def canVisitAllRooms(self, rooms) -> bool:used_key = set()used_key.add(0)s_len = len(rooms)def lock(keys):if keys:for key in keys:if key in used_key:continueelse:used_key.add(key)lock(rooms[key])for index, room in enumerate(rooms):if room and index in used_key:lock(room)return True if s_len <= len(used_key) else False
leetcode-841-钥匙和房间 题解相关推荐
- LeetCode 841. 钥匙和房间(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,-,N-1,并且房间里可能有一些钥匙能使你进入 ...
- C++性能之战(4)--LeetCode 841 钥匙和房间(cin和cout加速)
希望大家收藏: 本文持续更新地址:https://haoqchen.site/2018/09/04/LeetCode841/ 今天刷841的时候看到一个大神写的巨高级的代码.在这里分享以下.这位大神用 ...
- 841. 钥匙和房间
链接:841. 钥匙和房间 题解: class Solution {public:bool canVisitAllRooms(vector<vector<int>>& ...
- BFS广度优先搜索之钥匙和房间
841. 钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号.最初,除 0 号房间外的其余所有房间都被锁住.你的目标是进入所有的房间.然而,你不能在没有获得钥匙的时候进入锁住的房间.当你进 ...
- 刷题记录:广搜 | leetcode-841. 钥匙和房间 2023/6/5
841. 钥匙和房间 今天挑一个广搜的题目做一下. 其实我广搜的题熟练度一般/(ㄒoㄒ)/~~ 主要还是太久没做了-- 这个题目不是很难,非常适合寻找手感-- 这里先贴上别的大佬整理的知识点讲解: 知 ...
- 多益网络2019校招—钥匙和房间问题
时间:20180906 题目描述 : LeetCode 841. Keys and Rooms 有 N 个房间,开始时你位于 0 号房间.每个房间有不同的号码:0,1,2,...,N-1,并且房间里可 ...
- LeetCode第 227 场周赛题解
LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-an ...
- LeetCode 399 除法求值 题解
LeetCode 399 除法求值 题解 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[ ...
- 算法刷题-钥匙与房间
钥匙和房间 有 n 个房间,房间按从 0 到 n - 1 编号.最初,除 0 号房间外的其余所有房间都被锁住.你的目标是进入所有的房间.然而,你不能在没有获得钥匙的时候进入锁住的房间. 当你进入一个房 ...
- [Leetcode][第841题][JAVA][钥匙和房间][DFS][BFS]
[问题描述][中等] [解答思路] 当 xx 号房间中有 yy 号房间的钥匙时,我们就可以从 xx 号房间去往 yy 号房间.如果我们将这 nn 个房间看成有向图中的 nn 个节点,那么上述关系就可以 ...
最新文章
- 支付领域的未来与生物识别息息相关
- 请问如何在出错后能恢复到改变设置前的状态?
- [转]symbian基本类型转换
- X.509证书的介绍
- “指定的文件名无效或太长” 无法拷贝,咋办
- vue双向数据绑定v-model绑定单选框,复选框,下拉框
- IE10兼容性故障的解决办法
- Python正则表达式常用flag含义与用法详解
- JVM学习手册(X):查看堆内存使用情况以及排错
- 解决sublime text 3使用Install Package时出现There are no packages available for installation问题
- 计算机数值方法知识点,数值分析 全部 知识点.docx
- Java后端开发常用规范
- echarts地图示例
- 机器学习算法 07 —— 朴素贝叶斯算法(拉普拉斯平滑系数、商品评论情感分析案例)
- qq邮箱收不到通知邮件的解决方法
- 双硬盘安装ubuntu
- win10专业版和企业版的区别_Win10专业版和家庭版有什么区别?
- php 关于php时区时间错误问题 date 当前时间 时差(转载)
- 大白菜重装完系统后出现双系统怎么办
- 《小狗钱钱》思维导图
热门文章
- 强化学习入门项目 Spinning up OpenAI (2) 基本使用
- html5 图片粒子效果,Canvas + JavaScript 制作图片粒子效果
- 为什么空调能制冷和滴水?
- 不懂中医的才攻击中医
- 【沉浸式腾讯云服务器部署安装docker】
- 我的世界android启动器,我的世界手机版启动器 安卓方块启动器教程
- nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
- Android发送短信SMS的编程
- 带动画的好看的按钮集合HTML + CSS各种好看按钮组件
- C++ sort排序函数用法