207. Course Schedule
There are a total of numCourses
courses you have to take, labeled from 0
to numCourses - 1
. For example, the pair [0, 1]
, indicates that to take course 0
you have to first take course 1
.
Return true
if you can finish all courses. Otherwise, return false
.
Note: preqCount doesn't need to hold courses, just count
def canFinish(self, numCourses: int, prerequisites: List[List[int]]):
preqCount = {} enables = {}
for preq in prerequisites:
a, b = preq
if a not in preqCount:
preqCount[a] = 0
preqCount[a] = preqCount[a] + 1
if b not in enables:
enables[b] = set()
enables[b].add(a)
active = [] completed = 0
for i in range(numCourses):
if i not in preqCount:
active.append(i)
completed += 1
while active:
c = active.pop()
if c in enables:
for e in enables[c]:
preqCount[e] = preqCount[e] - 1
if not preqCount[e]:
completed += 1
active.append(e)
return completed == numCourses
Comments
Post a Comment