Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9acf325

Browse files
authored
Merge pull request #82 from jktam336/jktam336/210-Course-Schedule-II
Added JS 210-Course-Schedule-II
2 parents 7f121c3 + 147bed8 commit 9acf325

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

javascript/210-Course-Schedule-II.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @param {number} numCourses
3+
* @param {number[][]} prerequisites
4+
* @return {number[]}
5+
*/
6+
var findOrder = function(numCourses, prerequisites) {
7+
const prereq = [];
8+
for (let i = 0; i < numCourses; i++) {
9+
prereq[i] = [];
10+
};
11+
for (const [crs, pre] of prerequisites) {
12+
prereq[crs].push(pre);
13+
};
14+
15+
const output = [];
16+
const visit = new Set();
17+
const cycle = new Set();
18+
function dfs(course) {
19+
if (cycle.has(course)) return false;
20+
if (visit.has(course)) return true;
21+
22+
cycle.add(course);
23+
for (const pre of prereq[course]) {
24+
if (!dfs(pre)) return false;
25+
}
26+
cycle.delete(course);
27+
visit.add(course);
28+
output.push(course);
29+
return true;
30+
};
31+
32+
for (let j = 0; j < numCourses; j++) {
33+
if (!dfs(j)) return [];
34+
};
35+
return output;
36+
};

0 commit comments

Comments
 (0)