mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
0841.钥匙和房间.md, 增加 Golang, Java, Python 实现
This commit is contained in:
@ -121,10 +121,109 @@ public:
|
|||||||
|
|
||||||
Java:
|
Java:
|
||||||
|
|
||||||
|
```java
|
||||||
|
class Solution {
|
||||||
|
private void dfs(int key, List<List<Integer>> rooms, List<Boolean> visited) {
|
||||||
|
if (visited.get(key)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
visited.set(key, true);
|
||||||
|
for (int k : rooms.get(key)) {
|
||||||
|
// 深度优先搜索遍历
|
||||||
|
dfs(k, rooms, visited);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean canVisitAllRooms(List<List<Integer>> rooms) {
|
||||||
|
List<Boolean> visited = new ArrayList<Boolean>(){{
|
||||||
|
for(int i = 0 ; i < rooms.size(); i++){
|
||||||
|
add(false);
|
||||||
|
}
|
||||||
|
}};
|
||||||
|
|
||||||
|
dfs(0, rooms, visited);
|
||||||
|
|
||||||
|
//检查是否都访问到了
|
||||||
|
for (boolean flag : visited) {
|
||||||
|
if (!flag) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
|
||||||
|
python3
|
||||||
|
|
||||||
|
```python
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
|
||||||
|
def dfs(self, key: int, rooms: List[List[int]] , visited : List[bool] ) :
|
||||||
|
if visited[key] :
|
||||||
|
return
|
||||||
|
|
||||||
|
visited[key] = True
|
||||||
|
keys = rooms[key]
|
||||||
|
for i in range(len(keys)) :
|
||||||
|
# 深度优先搜索遍历
|
||||||
|
self.dfs(keys[i], rooms, visited)
|
||||||
|
|
||||||
|
def canVisitAllRooms(self, rooms: List[List[int]]) -> bool:
|
||||||
|
visited = [False for i in range(len(rooms))]
|
||||||
|
|
||||||
|
self.dfs(0, rooms, visited)
|
||||||
|
|
||||||
|
# 检查是否都访问到了
|
||||||
|
for i in range(len(visited)):
|
||||||
|
if not visited[i] :
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
|
||||||
|
```go
|
||||||
|
|
||||||
|
func dfs(key int, rooms [][]int, visited []bool ) {
|
||||||
|
if visited[key] {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
visited[key] = true
|
||||||
|
keys := rooms[key]
|
||||||
|
for _ , key := range keys {
|
||||||
|
// 深度优先搜索遍历
|
||||||
|
dfs(key, rooms, visited);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func canVisitAllRooms(rooms [][]int) bool {
|
||||||
|
|
||||||
|
visited := make([]bool, len(rooms));
|
||||||
|
|
||||||
|
dfs(0, rooms, visited);
|
||||||
|
|
||||||
|
//检查是否都访问到了
|
||||||
|
for i := 0; i < len(visited); i++ {
|
||||||
|
if !visited[i] {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
JavaScript:
|
JavaScript:
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user