【LeetCode75】第四十三题 钥匙和房间

目录

题目:

示例:

分析:

代码:


题目:

示例:

 

分析:

给我们一个数组,表示对应的房间里拥有能开启的对应索引号的钥匙。

一开始我们只能进入0号房间,也就是数组里索引号为0的位置。数组索引为0的位置里的元素就是我们能拿到的钥匙,可以开启对应房间号的门。我们可以再次进入到这些能够进入的房间,再拿到房间里的钥匙……

问我们最后能不能进入到所有的房间。

那么这道题是一眼就能看出来要使用BFS或是DFS来解题的了。

那我个人比较喜欢DFS,那我就用DFS来做。

首先我们先定义一个长度为房间数量的数组,元素类型为bool类型,用来表示我们能否进入到对应的房间。

一开始我们是只能进入到0号房间,也只能拿到0号房间里的钥匙

接着我们开始递归,在递归里遍历0号房间的钥匙,如果钥匙对应的房间我们是之前就可以进入的,那么我们跳过这把钥匙,因为该房间我们现在或者是之前已经递归过了,为了剪枝,我们就跳过这把钥匙。

如果钥匙对应的房间我们之前没有进入过,那么我们将一开始定义的那个数组中对应的位置置为true表示我们可以进入。再拿到这个房间里的钥匙,开始下一轮递归……

最终DFS结束,我们检查是否所有房间都是可以进入的即可。

代码:

class Solution {
public:void dfs(vector<bool>&temp,vector<vector<int>>& rooms,vector<int> key){for(int k:key){ //遍历我们有的钥匙if(temp[k]) continue;   //如果我们能进入对应的房间,那么我们之前遍历过了,这边剪枝.temp[k]=true;   //如果之前不能进入,那么现在可以进了,那么做个标记dfs(temp,rooms,rooms[k]);   //再接着递归现在进入的房间里内含的钥匙}}bool canVisitAllRooms(vector<vector<int>>& rooms) {vector<bool>temp(rooms.size(),false);   //是否能进入对应房间temp[0]=true;   //首先我们是可以进入到第一个房间dfs(temp,rooms,rooms[0]);   //dfs,传入可以进的房间,以及每个房间内含钥匙情况,和我们已经有的钥匙for(bool t:temp){   //遍历能否进入房间的情况,如果都可以进就返回true.if(!t) return false;}return true;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机组成 课程笔记】3.2 算数运算和逻辑运算的硬件实现

课程链接&#xff1a; 计算机组成_北京大学_中国大学MOOC(慕课) 3 - 2 - 302-门电路的基本原理&#xff08;11-39--&#xff09;_哔哩哔哩_bilibili 现代计算机的CPU和其他很多功能部件都是基于晶体管的集成电路&#xff0c;想要了解计算机组成的基本原理&#xff0c;还是需要有…

系统架构技能之设计模式-工厂模式

一、开篇 本文主要是讲述设计模式中最经典的创建型模式-工厂模式&#xff0c;本文将会从以下几点对工厂模式进行阐述。 本文将会从上面的四个方面进行详细的讲解和说明&#xff0c;当然会的朋友可以之处我的不足之处&#xff0c;不会的朋友也请我们能够相互学习讨论。 二、摘…

SpringCloudAlibaba常用组件

SpringCloudAlibaba常用组件 微服务概念 1.1 单体、分布式、集群 单体 ⼀个系统业务量很⼩的时候所有的代码都放在⼀个项⽬中就好了&#xff0c;然后这个项⽬部署在⼀台服务器上就 好了。整个项⽬所有的服务都由这台服务器提供。这就是单机结构。 单体应⽤开发简单,部署测试…

el-date-picker自定义只能选中当前月份和半年内月份等

需求&#xff1a;el-date-picker只能选中当前月期和当前月期往前半年&#xff0c;其他时间就禁用了不让选择了&#xff0c;因为没数据哈哈。当然也可以选择往前一年等。 一、效果 二、写个日期选择器 :picker-options&#xff1a;日期选项 value-format&#xff1a;选择后的格…

运算放大器总结

早期的运算放大器目的是制造模拟计算机&#xff0c;用来计算各种数学公式。虽然现在已经被数字电路替代了&#xff0c;但是运算放大器在模拟电路设计中&#xff0c;仍然是最重要的知识。 1、运放是怎么工作的&#xff1f; 以电压反馈型运放&#xff08;VFA&#xff09;为例。由…

一套成熟在用的Spring Cloud工程项目数字化管理云平台源码

技术架构&#xff1a; 微服务JavaSpring Cloud VueUniApp MySql 开发语言&#xff1a;Java 开发工具&#xff1a;Idea 前端框架&#xff1a;Vue 后端框架&#xff1a;Spring Cloud 数 据 库&#xff1a;MySql 移 动 端&#xff1a;UniApp 系统端口&#xff1a;PC端&…

【2D/3D RRT* 算法】使用快速探索随机树进行最佳路径规划(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

渗透测试漏洞原理之---【失效的访问控制】

文章目录 1、失效的访问控制1.1、OWASP Top 101.1.1、A5:2017-Broken Access Control1.1.2、A01:2021 – Broken Access Control 1.2、失效的访问控制类别1.2.1、水平越权1.2.2、垂直越权 1.3、攻防案例1.3.1、Pikachu靶场 Over Permision1.3.2、DVWA越权利用失效的访问控制漏洞…

Message: ‘chromedriver‘ executable may have wrong permissions.

今天运行项目遇到如下代码 driverwebdriver.Chrome(chrome_driver, chrome_optionsoptions)上述代码运行报错如下&#xff1a; Message: chromedriver executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home出错的原…

若依富文本 html样式 被过滤问题

一.场景 进入页面&#xff0c;富文本编辑框里回显这条新闻内容&#xff0c;如下图&#xff0c; 然后可以在富文本编辑框里对它实现再编辑&#xff0c;编辑之后将html代码提交保存到后台数据库。可以点击详情页进行查看。 出现问题&#xff1a;在提交到后台controller时&#x…

串行FIR滤波器

串行 FIR 滤波器设计 串行设计&#xff0c;就是在 16 个时钟周期内对 16 个延时数据分时依次进行乘法、加法运算&#xff0c;然后在时钟驱动下输出滤波值。考虑到 FIR 滤波器系数的对称性&#xff0c;计算一个滤波输出值的周期可以减少到 8 个。串行设计时每个周期只进行一次乘…

网易24届内推

【网易】2024届网易互联网秋季校园招聘内推开始啦&#xff01;给你分享我的专属内推邀请函&#xff1a;https://bole.campus.163.com/campus/home?projectId55&type99&isShare1&boleId7b842acc7c2b42db&boleType2&signatured5f2a3dc23bed70777a8be1a14b49…

Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

案例背景 最近总看到《消失的她》票房多少多少&#xff0c;《孤注一掷》票房又破了多少多少..... 于是我就想自己爬虫一下获取中国高票房的电影数据&#xff0c;然后分析一下。 数据来源于淘票票&#xff1a;影片总票房排行榜 (maoyan.com) 爬它就行。 代码实现 首先爬虫获…

嵌入式开发-串口通信介绍

串口通信&#xff08;Serial Communications&#xff09;是一种串行数据传输方式&#xff0c;它将数据一位一位地顺序传输&#xff0c;而不是并行传输。这种方式相比并行传输更为节省空间和成本&#xff0c;因此在现代工业和嵌入式系统中得到广泛应用。 串口通信通常使用RS-23…

微信小程序发布一个npm包

参考:https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html 同npm一样流程 npm install weixin_heath_apis

软件UI工程师工作的岗位职责(合集)

软件UI工程师工作的岗位职责1 职责&#xff1a; 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UE/UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.参与产品规划构思和创意过程&…

【iOS】折叠cell

文章目录 前言一、实现效果二、折叠cell的实现原理三、实现折叠cell的高度变化四、实现选中点击的单元格总结 前言 在暑假的3GShare中用到了折叠cell控件&#xff0c;特此总结博客记录 一、实现效果 二、折叠cell的实现原理 首先我们需要知道ScrollView的是TableView的父类&a…

详细理解(学习笔记) | DETR(整合了Transformer的目标检测框架) DETR入门解读以及Transformer的实操实现

文章目录 一、概述二、TransformerTransformer的pytorch实现 三、DETRTransformer.pyposition_encoding.pydetr.pyclass DETRclass SetCriterion分类 lossbox loss DETR 在全景分割上的应用&#xff08;浅看&#xff09;最后&#xff08;个人见解&#xff09; 一、概述 DETR&a…

详细的SAP的付款条件测试

详细的SAP的付款条件测试 正好需要看一个清账日期的问题&#xff0c;然后重新理了一下付款条件&#xff0c;特此记录&#xff0c;省的后面每次都要捋一遍。其实真正能做到按照条件付款的良心企业很少。 付款条件修改事务码&#xff1a;OBB8 1、凭证日期作为基准&#xff0c;…

股票贷款行业,给你一个低成本有效的获客渠道

我们比市场上的同行公司具有更多的质量优势。我们的推广部门不断使用大数据引导和定位技术以及促销策略的迭代升级&#xff0c;具有足够强大的硬实力&#xff0c;可以引导客户提供更优质的投资者。为金融公司带来更好的资源。现在的股票加粉主要是&#xff1a;微信加粉/Q组/留电…