Skip to content

Commit 3dc2cfb

Browse files
committed
update
1 parent a95fdd8 commit 3dc2cfb

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

60. 课程表.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
***你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程  bi 。***
2+
3+
```
4+
输入:numCourses = 2, prerequisites = [[1,0],[0,1]]
5+
输出:false
6+
解释:总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。
7+
```
8+
9+
Ref: https://leetcode.cn/problems/course-schedule/solution/bao-mu-shi-ti-jie-shou-ba-shou-da-tong-tuo-bu-pai-/
10+
11+
![algo28](./images/algo28.jpg)
12+
13+
```
14+
class Solution:
15+
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
16+
17+
edges = collections.defaultdict(list)
18+
indeg = [0]*numCourses
19+
20+
for info in prerequisites:
21+
edges[info[0]].append(info[1])
22+
indeg[info[1]] += 1
23+
#初始化入度为0的课程放入队列
24+
queue = [ind for ind, c in enumerate(indeg) if c==0 ]
25+
visited = 0
26+
while queue:
27+
visited += 1
28+
c = queue.pop(0)
29+
for v in edges[c]:
30+
indeg[v] -= 1
31+
if indeg[v] == 0:
32+
queue.append(v)
33+
return visited == numCourses
34+
```

images/algo28.jpg

73.4 KB
Loading

0 commit comments

Comments
 (0)