From 2b1f90a266733882a0b06eb1a846297a65f20c89 Mon Sep 17 00:00:00 2001 From: yqq Date: Sat, 18 Sep 2021 16:17:11 +0800 Subject: [PATCH] =?UTF-8?q?0841.=E9=92=A5=E5=8C=99=E5=92=8C=E6=88=BF?= =?UTF-8?q?=E9=97=B4.md,=20=E5=A2=9E=E5=8A=A0=20Golang,=20Java,=20Python?= =?UTF-8?q?=20=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0841.钥匙和房间.md | 99 ++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/problems/0841.钥匙和房间.md b/problems/0841.钥匙和房间.md index 4a0185ec..2ce9d343 100644 --- a/problems/0841.钥匙和房间.md +++ b/problems/0841.钥匙和房间.md @@ -121,10 +121,109 @@ public: Java: +```java +class Solution { + private void dfs(int key, List> rooms, List visited) { + if (visited.get(key)) { + return; + } + + visited.set(key, true); + for (int k : rooms.get(key)) { + // 深度优先搜索遍历 + dfs(k, rooms, visited); + } + } + + + public boolean canVisitAllRooms(List> rooms) { + List visited = new ArrayList(){{ + 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: -----------------------