Skip to content

Commit c9cdbfd

Browse files
committed
feat: Solve course-schedule problem
1 parent 56f7219 commit c9cdbfd

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

course-schedule/hu6r1s.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from collections import defaultdict
2+
3+
class Solution:
4+
# def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
5+
# for pre_x, pre_y in prerequisites:
6+
# if [pre_y, pre_x] in prerequisites:
7+
# return False
8+
# return True
9+
10+
11+
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
12+
d = defaultdict(list)
13+
14+
for x, y in prerequisites:
15+
d[x].append(y)
16+
17+
visited = set()
18+
finished = set()
19+
20+
def dfs(course):
21+
if course in visited:
22+
return False
23+
if course in finished:
24+
return True
25+
26+
visited.add(course)
27+
for v in d[course]:
28+
if not dfs(v):
29+
return False
30+
visited.remove(course)
31+
finished.add(course)
32+
return True
33+
34+
for course in list(d):
35+
if not dfs(course):
36+
return False
37+
return True

0 commit comments

Comments
 (0)