-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfindOrder.py
More file actions
24 lines (21 loc) · 817 Bytes
/
findOrder.py
File metadata and controls
24 lines (21 loc) · 817 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
indegree = [0] * numCourses
adjacents = {}
for course,pre in prerequisites:
indegree[course] += 1
adjacents[pre] = adjacents.get(pre,[]) + [course]
queue = deque()
for course,degree in enumerate(indegree):
if degree == 0:
queue.append(course)
res = []
while queue:
course = queue.popleft()
res.append(course)
adjs = adjacents.get(course,[])
for adj in adjs:
indegree[adj] -= 1
if indegree[adj] == 0:
queue.append(adj)
return res if len(res) == numCourses else []