Course Schedule II

Problem: Course Schedule II

We just consider course prerequisites as edges in a graph and do topological sort and we can get our answer.

Code in Python:

from collections import deque

class Solution(object):
    def findOrder(self, numCourses, prerequisites):
        """
        :type numCourses: int
        :type prerequisites: List[List[int]]
        :rtype: List[int]
        """
        out = [[] for _ in xrange(numCourses)]
        in_degree = [0] * numCourses
        for prerequisite in prerequisites:
            out[prerequisite[1]].append(prerequisite[0])
            in_degree[prerequisite[0]] += 1
        queue = deque([])
        for i in xrange(numCourses):
            if in_degree[i] == 0: queue.append(i)
        ans = []
        while queue:
            x = queue.popleft()
            ans.append(x)
            for course in out[x]:
                if in_degree[course] == 1: queue.append(course)
                else: in_degree[course] -= 1
        return ans if len(ans) == numCourses else []

results matching ""

    No results matching ""