Faaez Razeen

Course Schedule II

  • 2 min read
  • Graph
  • LC-Medium

3 years ago

Solution

TimeSpaceExplanation
O(e + v)O(e + v)
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]: prereqs = defaultdict(set) for crs, pre in prerequisites: prereqs[crs].add(pre) order = [] visting = set() visited = set() def dfs(crs): if crs in visting: return False if crs in visited: return True visting.add(crs) for prereq in prereqs[crs]: if not dfs(prereq): return False prereqs[crs] = set() visting.remove(crs) visited.add(crs) order.append(crs) return True for crs in range(numCourses): if not dfs(crs): return [] return order