Skip to content

Commit 385b865

Browse files
committed
https://leetcode.cn/problems/course-schedule/
1 parent a31c2ba commit 385b865

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ leetcode 测试
1010

1111
##### 包含的内容如下
1212

13+
https://leetcode.cn/problems/course-schedule/
14+
1315
https://leetcode.cn/problems/QA2IGt/
1416

1517
https://leetcode.cn/problems/course-schedule-ii/

course-schedule/index.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
export default function canFinish(
2+
numCourses: number,
3+
prerequisites: number[][],
4+
): boolean {
5+
const dependents: Map<number, number[]> = new Map();
6+
// const dependents: number[][] = new Array(numCourses).fill(0).map(() => []);
7+
const indegress: Map<number, number> = new Map();
8+
// const indegress: number[] = new Array(numCourses).fill(0);
9+
for (const [child, parent] of prerequisites) {
10+
const array = dependents.get(parent) ?? [];
11+
array.push(child);
12+
dependents.set(parent, array);
13+
14+
// dependents[parent].push(child);
15+
indegress.set(child, (indegress.get(child) ?? 0) + 1);
16+
// indegress[child]++;
17+
}
18+
const queue: number[] = Array.from(Array(numCourses).fill(0).keys()).filter(
19+
(i) => !indegress.has(i),
20+
);
21+
22+
const result: number[] = [];
23+
while (queue.length) {
24+
const u = queue.shift() as number;
25+
result.push(u);
26+
/* dependents[u] */
27+
for (const v of dependents.get(u) ?? []) {
28+
const degree = (indegress.get(v) ?? 0) - 1;
29+
// indegress[v]--;
30+
indegress.set(v, degree);
31+
if (degree === 0) queue.push(v);
32+
}
33+
}
34+
return result.length === numCourses;
35+
}

0 commit comments

Comments
 (0)