Member-only story

Leetcode 207: Course Schedule

Trisha
Feb 8, 2022

--

Problem Statement: https://leetcode.com/problems/course-schedule/

Video Explanation: https://youtu.be/s_S2VDqBkc0

class Solution:
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:

adjlist = defaultdict(list)
degree = { i:0 for i in range(numCourses)}
for course, prereq in prerequisites:
adjlist[prereq].append(course)
degree[course] = degree[course]+1

# find all the nodes with in degree = 0
q = [i for i in degree.keys() if degree[i] == 0]
# We have a starting point
finished = 0
while q:
top = q.pop()
finished+=1
for adj in adjlist[top]:
# all neighbours delete 1 from degree
degree[adj] = degree[adj]-1
# if no more in degree for this item pop it off and add to the queue
if degree[adj] == 0:
q.append(adj)
return finished == numCourses

--

--

No responses yet