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

news2024/11/19 5:35:46

目录

题目:

示例:

分析:

代码:


题目:

示例:

 

分析:

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

一开始我们只能进入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.coloradmin.cn/o/962218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像OCR转文字,验证码识别技术太疯狂-UI软件自动化

现在用PYTHON识别图片文字&#xff0c;PaddleOCR&#xff0c;Tesseract,Opencv等很多开源技术。知识大爆炸年代&#xff0c;几年不学习就跟不上时代了。 以前早的时候一个验证码图片上有4个不同颜色字符&#xff0c;带一些杂点&#xff0c;我写点代码按颜色最多的进行提取&…

Angular安全专辑之三 —— 授权绕过,利用漏洞控制管理员账户

这篇文章是针对实际项目中所出现的问题所做的一个总结。简单来说&#xff0c;就是授权绕过问题&#xff0c;管理员帐户被错误的接管。 详细情况是这样的&#xff0c;我们的项目中通常都会有用户身份验证功能&#xff0c;不同的用户拥有不同的权限。相对来说管理员账户所对应的…

Al智能问答工具HelpLook招募推荐官啦!

我们在使用AI智能问答软件的时候&#xff0c;可以多去留意一下软件的一些推广活动&#xff0c;比如说像是HelpLook这个软件&#xff0c;他有专门设置推广返利计划&#xff0c;在拉动更多新用户的同时做到回馈老用户。今天looklook就来讲一下&#xff0c;具体这个计划是怎么样的…

11 mysql float/double/decimal 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 float, decimal 类类型的相关数据…

如何在 Vue TypeScript 项目使用 emits 事件

Vue是构建出色的Web应用程序的最灵活、灵活和强大的JavaScript框架之一。Vue中最重要的概念和关键特性之一是能够促进应用程序组件之间的通信。让我们深入探讨一下Vue中的“emits”概念&#xff0c;并了解它们如何以流畅和无缝的方式实现父子组件之间的通信。 Vue中的emits是什…

layui 新增tab标签页

// $("#fjyj").click(function () {// //window.location.href "/sysconfig/SuperVisorEdit";// navigateToTeamPersonModule(/CollectData/GradeWarning/EduIndex, 分级预警);// });function navigateToTeamPersonModule(url, name) {var ids n…

前几天写的博客被选中进入【CSDN月度精选】榜单

小收获&#xff0c;记录一下&#xff0c;哈哈 这个貌似是CSDN给的排名和得分&#xff1a;

AI人员打闹监测识别算法

AI人员打闹监测识别算法通过yolopython网络模型框架算法&#xff0c; AI人员打闹监测识别算法能够准确判断出是否有人员进行打闹行为&#xff0c;算法会立即发出预警信号。Yolo算法&#xff0c;其全称是You Only Look Once: Unified, Real-Time Object Detection&#xff0c;其…

ArcGIS美化科研论文地图(利用在线底图)

1.加载在线底图服务 在ArcGIS Desktop中打开Catalog窗口&#xff0c;在GIS Servers中点击Add ArcGIS Server&#xff0c;之后选项全部默认&#xff0c;仅在URL中输入以下网址https://services.arcgisonline.com/arcgis 之后就可以看到底图了 我们在WorldElevation3D中选择Nat…

Php“梦寻”淘宝天猫商品详情数据接口,淘宝商品详情数据API接口,淘宝API接口申请指南(含代码示例)

淘宝商品详情接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取淘宝商品的详细信息&#xff0c;包括商品的标题、描述、图片等信息。在淘宝电商平台的开发中&#xff0c;淘宝详情接口 API 是非常常用的 API&#xff0c;因此本文将详细介绍淘宝详情接口 …

sentinel熔断报java.lang.reflect.UndeclaredThrowableException

背景&#xff1a;内部要进行应用jdk&springboot升级&#xff0c;因此也需要将Spring Cloud Hystrix 替换成alibaba sentinel。 依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</a…

Spring Boot源码解读与原理剖析:深入探索Java开发的奥秘!

评论区留言赠书15本 关注点赞评论&#xff0c;评论区回复“Spring Boot源码解读与原理剖析&#xff1a;深入探索Java开发的奥秘&#xff01;” 每篇最多评论3条&#xff01;&#xff01;采用抽奖助手自动拉取评论区有效评论送书两本&#xff0c; 开奖时间&#xff1a;9月11号 承…

经济2023---风口

改革开放以来&#xff0c;中国共有12次比较好的阶级跃迁的机会&#xff1a; 包括80年代选部委院校、办乡镇企业、倒卖商品&#xff1b;90年代下海、选外语外贸、炒股&#xff1b;00年代从事资源品行业、选金融、炒房&#xff1b;10年代选计算机、搞互联网、买比特币。 从这里…

基于Yolov5的摄像头吸烟行为检测系统(pytoch)

目录 1.数据集介绍 1.1数据集划分 1.2 通过voc_label.py生成txt 1.3 小目标定义 2.基于Yolov5的吸烟行为检测性能提升 2.1采用多尺度提升小目标检测精度 2.2 多尺度训练结果分析 2.3基于多尺度基础上加入BiFormer: 基于动态稀疏注意力构建高效金字塔网络架构 2.3.1 BiFo…

微软表示Visual Studio的IDE即日起开启“退休”倒计时

据了解&#xff0c;日前有消息透露称&#xff0c;适用于 Mac平台的Visual Studio集成开发环境(IDE)于8月31日启动“退休”进程。 而这意味着Visual Studio for Mac 17.6将继续支持12个月&#xff0c;一直到2024年8月31日。    微软表示后续不再为Visual Studio for Mac开发…

爬虫--爬取自己想去的目的的车票信息

前言&#xff1a; 本篇文章主要作为一个爬虫项目的小练习&#xff0c;来给大家进行一下爬虫的大致分析过程以及来帮助大家在以后的爬虫编写中有一个更加清晰的认识。 一&#xff1a;环境配置 Python版本&#xff1a;3.7 IDE:PyCharm 所需库&#xff1a;requests&#xff0…

切换Java版本

Mac安装不同Java版本 在Sentinel限流框架的使用中&#xff0c;Java版的Sentinel提供一个可以起Dashboard的jar包。访问项目接口&#xff0c;按预期应该在Dashboard里有数据。发现多次请求后还是空白。 仔细看Dashboard的日志&#xff0c;疑似是Java版本的问题&#xff0c;搜了下…

Linux - Docker 安装使用 常用命令 教程

Docker 官方文档地址: Get Started | Docker 中文参考手册: https://docker_practice.gitee.io/zh-cn/ 1.什么是 Docker 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are on your contain…