美文网首页
Lintcode 615. Course Schedule

Lintcode 615. Course Schedule

作者: woniudear | 来源:发表于2018-11-25 04:55 被阅读0次

题目求先修课程有没有冲突,算法是用bfs, 拓扑排序

拓扑排序:找到有向图中,从头到尾的一种排序,所以中间没有环路。

算法:首先需要邻接矩阵和计算每个课程的入度。将入度为0的排入队列中,对队列中的点进行遍历,将队列中点的邻居的入度减1,如果入度减为0了,将邻居也排入队列中,直到队列为空。

在这道题中,可以设置一个count来计算是否把所有的课程都遍历一遍,如果有闭环,闭环的接口始终入度不可能为0,就无法被放入队列中,所以count就会不等于总的课程数。

python代码:

```

from collections import deque

class Solution:

    """

    @param: numCourses: a total of n courses

    @param: prerequisites: a list of prerequisite pairs

    @return: true if can finish all courses or false

    """

    def canFinish(self, numCourses, prerequisites):

        # write your code here

        edge = [[] for i in range(numCourses)]

        indegree = [0] * numCourses

        for i, j in prerequisites:

            edge[j].append(i)

            indegree[i] += 1

        cnt = 0

        queue = deque()

        for i in range(numCourses):

            if indegree[i] == 0:

                queue.append(i)

        while queue:

            course = queue.popleft()

            cnt += 1

            for requirecourse in edge[course]:

                indegree[requirecourse] -= 1

                if indegree[requirecourse] == 0:

                    queue.append(requirecourse)

        return cnt == numCourses

```

相关文章

  • Lintcode 615. Course Schedule

    题目求先修课程有没有冲突,算法是用bfs, 拓扑排序 拓扑排序:找到有向图中,从头到尾的一种排序,所以中间没有环路...

  • 615. Course Schedule

    Description There are a total of n courses you have to ta...

  • Lintcode 616. Course Schedule II

    同样是拓扑排序,需要注意的是防治出现闭环的情况。当出现闭环,返回空。python 代码:

  • 刷题(15)Topological Sort

    leetcode207.Course Schedule ,210.Course Schedule ii 基本上都是...

  • Class Schedule Card

    Course schedule, online record every day of the course ev...

  • Course Schedule

    https://leetcode.com/problems/course-schedule/给定一个数字N和一个二...

  • 2019-09-29

    Course Schedule Longest Repeating Character Replacement G...

  • 2019-01-21

    LeetCode 207. Course Schedule Description There are a tot...

  • Course Schedule III

    题目来源一道课程选择的问题,给你一堆课程,告诉你每个课程上课所需时间以及停课日期。让你如何选择尽可能多的课。我没想...

  • Privacy Policy

    The "Course Schedule-Daily Record" app respects and prote...

网友评论

      本文标题:Lintcode 615. Course Schedule

      本文链接:https://www.haomeiwen.com/subject/ugvuqqtx.html