Skip to content

Commit b4bea64

Browse files
committed
solve: course schedule
1 parent d9ef843 commit b4bea64

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

course-schedule/evan.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from collections import defaultdict
2+
3+
4+
class Solution:
5+
def canFinish(self, numCourses, prerequisites):
6+
graph = defaultdict(list)
7+
8+
for course, prerequisite in prerequisites:
9+
graph[course].append(prerequisite)
10+
11+
visit = ["unvisited"] * numCourses
12+
13+
def detectCycle(course):
14+
if visit[course] == "visiting":
15+
return True # Cycle detected
16+
if visit[course] == "visited":
17+
return False # Already fully visited
18+
19+
visit[course] = "visiting" # Mark as visiting
20+
21+
for prerequisite in graph[course]:
22+
if detectCycle(prerequisite):
23+
return True
24+
25+
visit[course] = "visited" # Mark as fully visited
26+
27+
return False
28+
29+
# Perform cycle detection for all courses
30+
for course in range(numCourses):
31+
if detectCycle(course):
32+
return False
33+
34+
return True

0 commit comments

Comments
 (0)