【LeetCode:841. 鑰匙和房間 + DFS】

在這里插入圖片描述

🚀 算法題 🚀

🌲 算法刷題專欄 | 面試必備算法 | 面試高頻算法 🍀
🌲 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣?
🌲 作者簡介:碩風和煒,CSDN-Java領域優質創作者🏆,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發技術棧|面試刷題|面經八股文|經驗分享|好用的網站工具分享💎💎💎
🌲 恭喜你發現一枚寶藏博主,趕快收入囊中吧🌻
🌲 人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步?🎯🎯

🚀 算法題 🚀

在這里插入圖片描述
在這里插入圖片描述

🍔 目錄

    • 🚩 題目鏈接
    • ? 題目描述
    • 🌟 求解思路&實現代碼&運行結果
      • ? DFS
        • 🥦 求解思路
        • 🥦 實現代碼
        • 🥦 運行結果
    • 💬 共勉

🚩 題目鏈接

  • 841. 鑰匙和房間

? 題目描述

有 n 個房間,房間按從 0 到 n - 1 編號。最初,除 0 號房間外的其余所有房間都被鎖住。你的目標是進入所有的房間。然而,你不能在沒有獲得鑰匙的時候進入鎖住的房間。

當你進入一個房間,你可能會在里面找到一套不同的鑰匙,每把鑰匙上都有對應的房間號,即表示鑰匙可以打開的房間。你可以拿上所有鑰匙去解鎖其他房間。

給你一個數組 rooms 其中 rooms[i] 是你進入 i 號房間可以獲得的鑰匙集合。如果能進入 所有 房間返回 true,否則返回 false。

示例 1:

輸入:rooms = [[1],[2],[3],[]]
輸出:true
解釋:
我們從 0 號房間開始,拿到鑰匙 1。
之后我們去 1 號房間,拿到鑰匙 2。
然后我們去 2 號房間,拿到鑰匙 3。
最后我們去了 3 號房間。
由于我們能夠進入每個房間,我們返回 true。
示例 2:

輸入:rooms = [[1,3],[3,0,1],[2],[0]]
輸出:false
解釋:我們不能進入 2 號房間。

提示:

n == rooms.length
2 <= n <= 1000
0 <= rooms[i].length <= 1000
1 <= sum(rooms[i].length) <= 3000
0 <= rooms[i][j] < n
所有 rooms[i] 的值 互不相同

🌟 求解思路&實現代碼&運行結果


? DFS

🥦 求解思路
  1. 該題通過DFS或者BFS來實現,從0位置開始,去找到可以從當前list.get(0)集合中所有可去向的房間,如果當前位置沒有走過,計數加1。遞歸結束后,判斷此時cnt和房間的個數是否相等,如果相等,返回true,否則返回false。
  2. 有了基本的思路,接下來我們就來通過代碼來實現一下遞歸和迭代的解法。
🥦 實現代碼
class Solution {List<List<Integer>> rooms;boolean[] flag;int cnt;int n;public boolean canVisitAllRooms(List<List<Integer>> rooms) {this.rooms = rooms;this.flag = new boolean[rooms.size()];this.cnt = 0;dfs(0);return cnt == rooms.size();}private void dfs(int i) {cnt++;flag[i] = true;for (int next : rooms.get(i)) {if (!flag[next])dfs(next);}}}
🥦 運行結果

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述


💬 共勉

最后,我想和大家分享一句一直激勵我的座右銘,希望可以與大家共勉!

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39971.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39971.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39971.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓手機已刪除短信如何恢復?這2個技巧,找回離家出走的短信

手機宛如一座豐富的寶庫&#xff0c;珍藏著生活中的點滴回憶。其中&#xff0c;短信作為溝通的橋梁&#xff0c;記錄著我們與親朋好友間的溫情脈脈&#xff0c;承載著無數珍貴的瞬間。然而&#xff0c;有時&#xff0c;我們卻會不慎觸發寶庫中的機關&#xff0c;使得這些寶貴的…

陳文自媒體:30歲房貸1000萬,杠杠超乎想象!

首先寫這個文章我要聲明&#xff0c;這個內容沒有傳播負能量&#xff0c;沒有傳播所謂的焦慮&#xff0c;我只是想表達一下我的觀點。 昨天的中金30歲女士的事件&#xff0c;我相信很多網友都知道了&#xff0c;已經上了熱搜了。 簡單總結一下原因&#xff0c;據說是她和老公…

【計算智能】遺傳算法(二):基本遺傳算法在優化問題中的應用【實驗】

前言 本系列文章架構概覽&#xff1a; 本文將介紹基本遺傳算法在解決優化問題中的應用,通過實驗展示其基本原理和實現過程&#xff1a;選取一個簡單的二次函數作為優化目標&#xff0c;并利用基本遺傳算法尋找其在指定范圍內的最大值。 2. 基本遺傳算法&#xff08;SGA&#x…

面試公司的時候一般要問HR的問題和關注的福利待遇(比較重要,親測)

1.問是否雙休&#xff0c;是否有五險一金 2.問福利待遇&#xff0c;是否包吃住&#xff0c;是否有班車及補貼等 3.是否加班 4.是否有健身房&#xff0c;食堂等設施 5.是否出差&#xff0c;在哪個城市 6.工作地點能不能選擇 7.晉升機會怎么樣&#xff0c;什么時候才能晉升&#…

從0構建一款appium-inspector工具

上一篇博客從源碼層面解釋了appium-inspector工具實現原理&#xff0c;這篇博客將介紹如何從0構建一款簡單的類似appium-inspector的工具。如果要實現一款類似appium-inspector的demo工具&#xff0c;大致需要完成如下六個模塊內容 啟動 Appium 服務器連接到移動設備或模擬器啟…

vue 中 使用騰訊地圖 (動態引用騰訊地圖及使用簽名驗證)

在設置定位的時候使用 騰訊地圖 選擇地址 在 mounted中引入騰訊地圖&#xff1a; this.website.mapKey 為地圖的 key // 異步加載騰訊地圖APIconst script document.createElement(script);script.type text/javascript;script.src https://map.qq.com/api/js?v2.exp&…

SS8812T替代DRV8812的國產雙通道H橋電機驅動芯片

由工采網代理的SS8812T是一款國產雙通道H橋電機驅動芯片&#xff1b;該芯片為打印機和其它電機一體化應用提供一種雙通道集成電機驅動方案&#xff1b;可Pin-to-Pin兼容替代DRV8812&#xff0c;可廣泛應用于POS、打印機、安防相機、辦公自動化設備、游戲機、機器人等。 產品描述…

Vue.js 案例——商品管理

一.需要做出的效果圖&#xff1a; 二.實現的步驟 首先&#xff0c;先建一個項目&#xff0c;命名Table&#xff0c;在Table項目中的components里新建一個MyTable.vue文件。 第二步&#xff0c;在原有的 HelloWorld.vue中寫入代碼。 HelloWorld.vue代碼如下&#xff1a; <…

KumiaoQQ機器人框架源碼

源碼介紹 酷喵機器人框架基于PC協議與MGCH的結合&#xff0c;MGCH即 MiraiGO-CQhttp&#xff08;代碼類型&#xff1a;易語言&#xff09;基本的API功能已經實現&#xff0c;具體可自測&#xff08;教程/日志/說明文本已附帶&#xff09;開放源碼僅供參考學習交流&#xff0c;…

遠超美國!中國AI專利數量全球第一!商湯推出面向C端用戶大模型“Vimi”,可生成分鐘級視頻!|AI日報

文章推薦 蘋果獲得OpenAI董事會觀察員職位&#xff01;Runway正籌集新一輪融資&#xff0c;估值40億美元&#xff01;&#xff5c;AI日報 AI基準測評&#xff08;下&#xff09;&#xff1a;視頻生成、代碼能力、邏輯推理&#xff0c;AI是否已經超越人類&#xff1f; 聯合國…

【linux高級IO(一)】理解五種IO模型

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:Linux從入門到精通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學更多操作系統知識 ? &#x1f51d;&#x1f51d; Linux高級IO 1. 前言2. 重談對…

kubernetes dashboard安裝

1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 對應版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改對應的yaml,…

Linux Conda 入門案例教程

Conda 的基本概念 1.什么是 Conda&#xff1f;&#xff1a;Conda 是一個開源的包管理器和環境管理器&#xff0c;用于管理 Python 和其他語言的環境和依賴項。 2.Conda 的特點&#xff1a;Conda 的特點包括快速、可靠、靈活和跨平臺支持等。 安裝和配置 1.安裝 Conda&#x…

adb不插usb線通過wifi調試

說起做手機開發也有好多年了&#xff0c;說來慚愧&#xff0c;我最近才知道安卓手機是可以不插數據線進行開發調試的。起因是公司近期采購了一批安卓一卡通設備&#xff0c;需要對其進行定制開發APP,但是由于我插USB調試發現沒有反應。通過詢問廠家才知道可以通過WIFI進行調試。…

請注意,以下這幾種操作都會導致流量卡被停用!

最近一段時間&#xff0c;小編經常收到一些反饋&#xff0c;明明是剛辦理的手機號還沒有用幾天就被停用了&#xff0c;今天&#xff0c;這篇文章我們要了解就是手機號被停用的問題。 ? 對于新辦理的手機號會被停用這個問題&#xff0c;主要還是因為運營商為了防止電話詐騙&…

vue監聽數據時 newValue, oldValue操作處理

要只存入新更改的數據&#xff0c;可以在 watch 的回調函數中進行比較&#xff0c;篩選出有變化的屬性并將其存入新數組。以下是一個示例代碼&#xff0c;假設要監聽的對象為 obj&#xff1a; data() {return {differenceArray: [], obj: { /* 對象的初始屬性 */ }}; }, compu…

java數據結構集合復習之包裝類和泛型

前言: 這是我最一年學習java的一部分的回顧總結 1.包裝類 在Java中&#xff0c;由于基本類型不是繼承自Object&#xff0c;為了在泛型代碼中可以支持基本類型&#xff0c;Java給每個基本類型都對應了一個包裝類型。 1.1基本數據類型和對應的包裝類 ----—基本數據類型包裝類…

ubuntu軟件源的兩種格式和環境變量

1. ubuntu的/etc是什么目錄&#xff1f; 在Ubuntu操作系統中&#xff0c;/etc/是一個特殊的目錄&#xff0c;它包含系統的配置文件。這些配置文件用于設置各種系統和應用程序的參數和選項。 一般來說&#xff0c;用戶可以在這個目錄下找到各種重要的配置文件&#xff0c;如網絡…

Web3 ETF的主要功能

Web3 ETF的主要功能可以概括為以下幾點&#xff0c;Web3 ETF仍是一項新興投資產品&#xff0c;其長期表現仍存在不確定性。投資者在投資Web3 ETF之前應仔細研究相關風險&#xff0c;并做好充分的風險評估。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xf…

商務辦公優選!AOC Q27E3S2商用顯示器,打造卓越新體驗!

摘要&#xff1a;助辦公室一族縱橫職場&#xff0c;實現高效舒適辦公&#xff01; 在日常商務辦公中&#xff0c;對于辦公室一族來說總有太多“難難難難難點”&#xff1a;工作任務繁瑣&#xff0c;熬夜加班心力交瘁、長時間伏案工作導致頸椎、眼睛等出現問題&#xff0c;職業…