207. 课程表 - 力扣(LeetCode)

大佬图示

可以正确执行

会形成Loop

代码

python 复制代码
# encoding = utf-8
# 开发者:Alen
# 开发时间: 21:13 
# "Stay hungry,stay foolish."

class Solution(object):
    def canFinish(self, numCourses, prerequisites):
        """
        :type numCourses: int
        :type prerequisites: List[List[int]]
        :rtype: bool
        """
        preMap = [[] for _ in range(numCourses)]

        for crs, pre in prerequisites:
            preMap[crs].append(pre)

        # preMap = [
        #     [],      # 课程 0 没有先修课
        #     [0],     # 课程 1 需要先修 0
        #     [0],     # 课程 2 需要先修 0
        #     [1]      # 课程 3 需要先修 1
        # ]

        # visitSet = all courses along the curr DFS path
        visitSet = set()

        def dfs(crs):
            if crs in visitSet:
                return False
            if preMap[crs] == []:
                return True
            visitSet.add(crs)

            for pre in preMap[crs]:
                if not dfs(pre):
                    return False
            visitSet.remove(crs)
            preMap[crs] = []
            return True

        for crs in range(numCourses):
            if not dfs(crs):
                return False
        return True

结果

解题步骤:www.bilibili.com

相关推荐
不会就选b13 分钟前
算法日常・每日刷题--<归并排序>1
数据结构·算法
啦啦啦啦啦zzzz39 分钟前
算法:回溯算法
c++·算法·leetcode
IT探索1 小时前
Linux 查找文件指令总结
linux·算法
Lumos1862 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法
稚南城才子,乌衣巷风流2 小时前
DFS序详解:原理、应用与实现
算法·深度优先·图论
稚南城才子,乌衣巷风流2 小时前
动态树(Dynamic Tree)数据结构详解
数据结构·算法
变量未定义~3 小时前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗3 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH3 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车