mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
0841.钥匙和房间.md, 增加 Golang, Java, Python 实现
This commit is contained in:
@ -121,10 +121,109 @@ public:
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
-----------------------
|
||||
|
Reference in New Issue
Block a user