Skip to content

Commit dde5593

Browse files
Time: 102 ms (61.41%), Space: 15.4 MB (83.08%) - LeetHub
1 parent d0a858b commit dde5593

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed
Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
class Solution:
22
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
3-
graph = [[] for _ in range(numCourses)]
4-
indegree = [0]*numCourses
3+
graph = defaultdict(list)
4+
indeg = [0]*numCourses
5+
for i, j in prerequisites:
6+
graph[i].append(j)
7+
indeg[j] += 1
58

6-
for x, y in prerequisites:
7-
graph[y].append(x)
8-
indegree[x] += 1
9-
10-
q = deque()
9+
qu = deque()
1110
for i in range(numCourses):
12-
if indegree[i] == 0:
13-
q.append(i)
11+
if indeg[i] == 0:
12+
qu.append(i)
1413

15-
result = []
16-
while q:
17-
node = q.popleft()
18-
result.append(node)
19-
for neighbor in graph[node]:
20-
indegree[neighbor] -= 1
21-
if indegree[neighbor] == 0:
22-
q.append(neighbor)
14+
ans = []
15+
while qu:
16+
curr = qu.popleft()
17+
ans.append(curr)
18+
for nei in graph[curr]:
19+
indeg[nei] -= 1
20+
if indeg[nei] == 0:
21+
qu.append(nei)
2322

24-
return result if len(result) == numCourses else []
23+
return ans[::-1] if len(ans) == numCourses else []

0 commit comments

Comments
 (0)