File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change 1+ # course schedule | leetcode 207 | https://leetcode.com/problems/course-schedule/
2+ # method: depth first search
3+
4+ class Solution :
5+ def canFinish (self , numCourses : int , prerequisites ) -> bool :
6+
7+ # init prequisite map
8+ preqMap = {}
9+ for i in range (numCourses ):
10+ preqMap [i ] = []
11+
12+ # add mentioned prerequisites
13+ for crs , pre in prerequisites :
14+ preqMap [crs ].append (pre )
15+
16+ # init visit set
17+ visitSet = set ()
18+
19+ # dfs
20+ def checkPreq (crs ):
21+
22+ # if course is already visited
23+ if crs in visitSet :
24+ return False
25+
26+ # if no prequisites left
27+ if preqMap [crs ] == []:
28+ return True
29+
30+ # visiting this course
31+ visitSet .add (crs )
32+
33+ # checking each prerequisite
34+ for pre in preqMap [crs ]:
35+ if not checkPreq (pre ): return False
36+
37+ # all prerequisites are doable
38+ visitSet .remove (crs )
39+ preqMap [crs ] = []
40+ return True
41+
42+ # check prerequisites for each course
43+ for crs in range (numCourses ):
44+ if not checkPreq (crs ): return False
45+
46+ return True
You can’t perform that action at this time.
0 commit comments