LeetCode841 鑰匙和房間

2022-06-27 10:03:15 字數 1223 閱讀 1604

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:

輸入: [[1],[2],[3],]

輸出: true

解釋:

我們從 0 號房間開始,拿到鑰匙 1。

之後我們去 1 號房間,拿到鑰匙 2。

然後我們去 2 號房間,拿到鑰匙 3。

最後我們去了 3 號房間。

由於我們能夠進入每個房間,我們返回 true。

示例 2:

輸入:[[1,3],[3,0,1],[2],[0]]

輸出:false

解釋:我們不能進入 2 號房間。

1 <= rooms.length <= 1000

0 <= rooms[i].length <= 1000

所有房間中的鑰匙數量總計不超過3000

/*

演算法思想:

有兩種方式,

第一通過深度優先搜尋的方式,到了每乙個房間就判斷鑰匙是否存在於已經擁有的序列中,如果不在就把他設定為可以訪問。

第二通過廣度優先搜尋的方式進行探索。將可訪問的0房間加入佇列之中,訪問佇列中的乙個元素,遍歷他可以到達的房間,如果該房間還沒有被訪問,那麼設定為訪問,否則跳過。

*///

演算法實現:

class

solution }}

for (int i = 0; i < n;i++)

}return

true

; }

};

leetcode841 鑰匙和房間

有 n 個房間,開始時你位於 0 號房間。每個房間有不同的號碼 0,1,2,n 1,並且房間裡可能有一些鑰匙能使你進入下乙個房間。在形式上,對於每個房間 i 都有乙個鑰匙列表 rooms i 每個鑰匙 rooms i j 由 0,1,n 1 中的乙個整數表示,其中 n rooms.length。鑰匙...

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...

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...