841. 钥匙和房间

2024-04-10 13:52
文章标签 钥匙 房间 841

本文主要是介绍841. 钥匙和房间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

841. 钥匙和房间

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • _841钥匙和房间_dfs
    • _841钥匙和房间_bfs
  • 错误经验吸取

原题链接:

841. 钥匙和房间

https://leetcode.cn/problems/keys-and-rooms/description/

完成情况:

在这里插入图片描述

解题思路:

这段代码是一个解决问题的类,其中包含了一个私有方法dfs和一个公共方法canVisitAllRooms。dfs方法使用深度优先搜索(DFS)算法来遍历房间,同时记录哪些房间被访问过。canVisitAllRooms方法则调用dfs方法来检查是否可以访问所有房间。

具体解释如下:

  • dfs方法接收一个键值key、房间列表rooms和访问状态列表visited作为参数。如果当前房间已经被访问过,则直接返回;否则标记当前房间为已访问,并递归地对当前房间可以到达的房间进行深度优先搜索。
  • canVisitAllRooms方法接收一个房间列表rooms作为参数。首先创建一个与房间数量相同的访问状态列表visited,并调用dfs方法从第一个房间开始遍历。最后检查visited列表中是否所有房间都被访问过,若有未被访问的房间则返回false,否则返回true。

这段代码的主要功能是使用DFS算法来检查是否可以访问所有的房间,通过标记访问状态来避免重复访问,并最终返回一个布尔值表示是否可以访问所有房间。

参考代码:

_841钥匙和房间_dfs

package 代码随想录.图论;import java.util.ArrayList;
import java.util.List;public class _841钥匙和房间_dfs {/*** 房间编号从0开始计算 ,每个List<Integer>存储一个集合,集合里表示能去的所有方便* @param rooms* @return*/public boolean canVisitAllRooms(List<List<Integer>> rooms) {//dfs,看看能不能遍历到所有的节点即可。//先构造一个visited数组用来最后判别是否能访问到所有的节点List<Boolean> visited = new ArrayList<Boolean>(){{//并为里面rooms.size()尺寸赋值全falsefor (int i = 0; i < rooms.size();i++) {add(false);}}};dfs_canVisitAllRooms(0,rooms,visited);//检查是否都访问到了for (boolean flag : visited){if (!flag){return false;}}return true;}private void dfs_canVisitAllRooms(int idx_key, List<List<Integer>> rooms, List<Boolean> visited) {if (visited.get(idx_key)){return;}visited.set(idx_key,true);for (int k : rooms.get(idx_key)){//递归dfs_canVisitAllRooms(k,rooms,visited);}}
}

_841钥匙和房间_bfs

package 代码随想录.图论;import java.util.ArrayDeque;
import java.util.Deque;
import java.util.List;public class _841钥匙和房间_bfs {/*** 房间编号从0开始计算 ,每个List<Integer>存储一个集合,集合里表示能去的所有方便* @param rooms* @return*/public boolean canVisitAllRooms(List<List<Integer>> rooms) {//先构造一个visited数组用来最后判别是否能访问到所有的节点boolean visited [] = new boolean[rooms.size()];visited[0] = true;Deque<Integer> queueList = new ArrayDeque<Integer>();queueList.add(0);   //加入一号房间while (!queueList.isEmpty()){//遍历,并不断加入新的节点int curNode_Key = queueList.poll();//再去对应位置获取所有的元素加入queueList,然后进行判断,然后迭代for (int key : rooms.get(curNode_Key)){if (visited[key])   continue;visited[key] = true;queueList.add(key);}}for (boolean key_visit : visited){if (!key_visit) return false;}return true;}
}

错误经验吸取

这篇关于841. 钥匙和房间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/891243

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

macos 一直弹出 “git-credential-osxkeychain”想要访问你的钥匙串中的密钥“github.com” 解决方法

macos 一直弹出 “git-credential-osxkeychain”想要访问你的钥匙串中的密钥“github.com” 解决方法 现在网络上关于这个问题的解决方案大部分都是打开钥匙串访问,然后删除github的密钥,但是这个方法其实并不奏效。具体的解决方法如下(二选一即可) 方法一 使用GitHub CLI 首先,使用brew安装GitHub CLI: brew install

52.x86游戏实战-XXX获取房间坐标

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3 提取码:6tw3 复制这段内容后打开百度网盘手机App,操作更方便哦 上一个内容:51.x86游戏实战-XXX返回城镇的实现 上一个内容里把

探索数据世界的钥匙:机器学习中的线性回归

在浩瀚的数据海洋中,寻找隐藏的模式与规律,一直是科学家、工程师乃至各行各业决策者们的共同追求。而机器学习,作为这一领域的璀璨明珠,以其强大的数据分析与预测能力,正逐步改变着我们的世界。在众多机器学习算法中,线性回归以其简洁、直观、易于理解的特点,成为了入门机器学习的首选,更是解决回归问题的一把金钥匙。 一、线性回归:定义与原理 线性回归,顾名思义,是一种通过线性模型来预测一个或多个自变量(

“解锁进程间高效沟通,Linux IPC是你的关键钥匙!“#Linux系统编程之进程间通信【下】

"解锁进程间高效沟通,Linux IPC是你的关键钥匙!"#Linux系统编程之进程间通信【下】 前言预备知识一、 共享内存概述1.1 共享内存概述简图 二、 共享内存编程实战2.1 共享内存介绍2.1.1 共享内存的特点 2.2 共享内存几个重要API介绍2.2.1 shmget函数介绍2.2.2 shmat函数介绍2.2.3 shmdt函数介绍2.2.4 shmctl函数介绍 2.3 共

46.x86游戏实战-DXX封包实现进入地图房间

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3 提取码:6tw3 复制这段内容后打开百度网盘手机App,操作更方便哦 上一个内容:45.x86游戏实战-XXX封包组包拼包详解 上一个内容里

钥匙失效、门卡死?看如何用电脑远程解救作业

不少人都在自己的电脑上安排了远程控制软件,以便在紧急情况下可以相互远程操作。原本这样的设置只是为了应对偶尔的加班需求,没想到今天它发挥了意想不到的作用。 就在刚才,一阵突如其来的狂风“咣”地一声将门牢牢锁死,钥匙也无法将其打开。已是深夜,我们并不想打扰开锁师傅,因此暂时无法进入被锁的房间。这造成了一个棘手的问题,因为大宝的作业还保存在那台电脑里。这时,事先安装的远程控制软件此刻派上了用场。

【单片机毕业设计选题24024】-房间自动除湿控制系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式。自动模式下如果获取到湿度 值大于设定的湿度值则自动打开风扇,手动模式下手动开关风扇。 系统上电后显示“欢迎使用除湿控制系统请稍后”,两秒钟后进入主页面显示。 第一行显示系统模式,手动或自动模式 第二行显示获取到的温湿度 第三行显示设置的湿度阈值 第四行显示风扇状态和系统报警状态,风扇状态有开关状态,系统状态和OK和 NG状态。

房间灰尘多怎么办?资深保洁推荐除尘最有效的空气净化器

家中的灰尘问题一直是许多人的烦恼,尤其是对尘螨过敏的人来说,灰尘简直是“心头之患”。常言道:“家有尘埃,心头有累。”每天打扫灰尘成了许多人的烦恼,尤其是对尘螨过敏的人来说,灰尘简直是“心头之患”。传统的清洁手段如扫地、吸尘虽然能部分缓解问题,但往往治标不治本。随着空气净化器的普及,人们对其寄予厚望。然而,市场上空气净化器品牌繁多,功能各异,消费者在选择时常常无从下手。今天,我们就来为大家揭

springboot+vue+mybatis酒店房间管理系统+PPT+论文+讲解+售后

随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多商家的眼球之中,他们利用网络来做这个电商的服务,随之就产生了“酒店房间管理系统”,这样就让人们酒店房间管理系统更加方便简单。 对于本酒店房间管理系统的设计来说,它主要是采用java语言技术。在整个系统的设计当中它是应用mysql数据库来完成的,具体根据酒店房间管理系统的现状来进行开发的,具体根据用户需求实现酒店房间管理系统网络化的