Skip to content

Commit 808e01f

Browse files
authored
Create Course Schedule - Leetcode 207.py
1 parent 2698216 commit 808e01f

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

Course Schedule - Leetcode 207.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution:
2+
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
3+
g = defaultdict(list)
4+
courses = prerequisites
5+
for a, b in courses:
6+
g[a].append(b)
7+
8+
UNVISITED = 0
9+
VISITING = 1
10+
VISITED = 2
11+
states = [UNVISITED] * numCourses
12+
13+
def dfs(node):
14+
state = states[node]
15+
if state == VISITED: return True
16+
elif state == VISITING: return False
17+
18+
states[node] = VISITING
19+
20+
for nei in g[node]:
21+
if not dfs(nei):
22+
return False
23+
24+
states[node] = VISITED
25+
return True
26+
27+
for i in range(numCourses):
28+
if not dfs(i):
29+
return False
30+
31+
return True # Time: O(N + E), Space: O(N + E)

0 commit comments

Comments
 (0)