mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
增加841. 钥匙和房间 JavaScript版本
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user