首先看到这个题目,应该意识到这是一个有向图,然后通过深度优先搜索或者广度优先搜索来解决这道题 。
关于深度优先搜索和广度优先搜索可以看我的这一篇文章,理解一下它们的思想,或者你就有思路做这道题了。
深度优先搜索(dfs)和广度优先搜索(bfs)_猫弦920的博客-优快云博客
下面是我用广度优先搜索解决的代码 语言是JavaScript
var canVisitAllRooms = function (rooms) {
var keys = [0];
var length = 0;
while (length <= keys.length) {
let key = rooms[keys[length]];
if (typeof key === 'object') {
for (let i = 0; i < key.length; i++) {
if (keys.includes(key[i])) {
continue;
} else {
keys.push(key[i]);
}
}
} else if (rooms.includes(key)) {
if (!keys.includes(key)) {
keys.push(key);
}
}
length++;
}
if (keys.length == rooms.length) {
return true;
} else {
return false;
}
};
关于深度优先搜索,大家也可以试试,或者有需要的话,之后再补充一下深度优先搜索解这道题。