Skip to content

Commit abe7cc5

Browse files
committed
Feat: 207. Course Schedule
1 parent 00af1c5 commit abe7cc5

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

course-schedule/HC-kang.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* https://leetcode.com/problems/course-schedule/
3+
* T.C. O(V + E)
4+
* S.C. O(V + E)
5+
*/
6+
function canFinish(numCourses: number, prerequisites: number[][]): boolean {
7+
const graph: number[][] = Array.from({ length: numCourses }, () => []);
8+
for (const [course, pre] of prerequisites) {
9+
graph[pre].push(course);
10+
}
11+
12+
const visited = new Array(numCourses).fill(false);
13+
const visiting = new Array(numCourses).fill(false);
14+
15+
const dfs = (course: number): boolean => {
16+
if (visited[course]) return true;
17+
if (visiting[course]) return false;
18+
19+
visiting[course] = true;
20+
for (const neighbor of graph[course]) {
21+
if (!dfs(neighbor)) return false;
22+
}
23+
visiting[course] = false;
24+
visited[course] = true;
25+
26+
return true;
27+
};
28+
29+
for (let i = 0; i < numCourses; i++) {
30+
if (!visited[i] && !dfs(i)) return false;
31+
}
32+
33+
return true;
34+
}

0 commit comments

Comments
 (0)