ds-algo-study
Version:
Just experimenting with publishing a package
45 lines (34 loc) • 1.07 kB
JavaScript
// View the full problem and run the test cases at:
// https://leetcode.com/problems/course-schedule/
function buildGraph(edges) {
let graph = {}
edges.forEach((edge) => {
let [ dest, src ] = edge.map(String);
if (dest in graph) {
graph[dest].push(src);
} else {
graph[dest] = [ src ];
}
if(!(src in graph)) {
graph[src] = [];
}
});
return graph;
}
function canFinish(numCourses, prerequisites) {
let graph = buildGraph(prerequisites);
let totalCourses = Object.keys(graph).length;
let visited = new Set();
let eligibleNodeExists = true;
while (eligibleNodeExists) {
eligibleNodeExists = false;
for (let node in graph) {
let isEveryParentVisited = graph[node].every((parent) => visited.has(parent));
if (!visited.has(node) && isEveryParentVisited) {
eligibleNodeExists = true;
visited.add(node);
}
}
}
return visited.size == totalCourses;
}