增加841. 钥匙和房间 JavaScript版本

This commit is contained in:
jerryfishcode
2021-09-27 23:26:57 +08:00
committed by GitHub
parent a97988ede2
commit 4d4cd5bace

View File

@ -220,6 +220,55 @@ func canVisitAllRooms(rooms [][]int) bool {
```
JavaScript
```javascript
//DFS
var canVisitAllRooms = function(rooms) {
const dfs = (key, rooms, visited) => {
if(visited[key]) return;
visited[key] = 1;
for(let k of rooms[key]){
// 深度优先搜索遍历
dfs(k, rooms, visited);
}
}
const visited = new Array(rooms.length).fill(false);
dfs(0, rooms, visited);
//检查是否都访问到了
for (let i of visited) {
if (!i) {
return false;
}
}
return true;
};
//BFS
var canVisitAllRooms = function(rooms) {
const bfs = rooms => {
const visited = new Array(rooms.length).fill(0); // 标记房间是否被访问过
visited[0] = 1; // 0 号房间开始
const queue = []; //js数组作为队列使用
queue.push(0); // 0 号房间开始
// 广度优先搜索的过程
while(queue.length !== 0){
let key = queue[0];
queue.shift();
for(let k of rooms[key]){
if(!visited[k]){
queue.push(k);
visited[k] = 1;
}
}
}
// 检查房间是不是都遍历过了
for(let i of visited){
if(i === 0) return false;
}
return true;
}
return bfs(rooms);
};
```
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)