Skip to content

210 course schedule ii

210. Course Schedule II

题目: https://leetcode.com/problems/course-schedule-ii/

难度: Medium

思路:

在207的基础上加了order,进击

class Solution(object):
    def findOrder(self, numCourses, prerequisites):
        """
        :type numCourses: int
        :type prerequisites: List[List[int]]
        :rtype: List[int]
        """
        degrees = [ 0 for i in range(numCourses)]
        childs = [[] for i in range(numCourses)]
        for front, tail in prerequisites:
            degrees[front] += 1
            childs[tail].append(front)


        courses = set(range(numCourses))
        flag = True
        order = []

        while flag and len(courses):
            flag = False
            removeList = []
            for x in courses:
                if degrees[x] == 0:
                    print x
                    for child in childs[x]:
                        degrees[child] -= 1
                    removeList.append(x)
                    order.append(x)
                    flag = True
            for x in removeList:
                courses.remove(x)

        if len(courses) == 0:
            return order
        else:
            return []



回到顶部