207. 课程表
用时 1h 30min
我哭了, 一道常见 mid 写了 一个多小时
还是一道以前写过两遍的题
哈哈哈哈哈哈哈哈哈 也太真实了
拿到题 就开始写 DFS,然后写着写着 不知道为什么 把 DFS 和 BFS 混在一起用了,也不知道自己是怎么想的
导致做出来的结果全部是 TRUE
最后只好看了一眼自己以前怎么写出来的才过
BFS 的解法
思路就是 先遍历一遍数组,存储 每个课程有几个依赖 , 和 被依赖的课程 map 表
然后找到依赖是 0 的课程,进行 BFS,每次出栈都视为学习了一门课程
1 | var canFinish = function (numCourses, prerequisites) { |
DFS 解法
考察从每个课程出发做 DFS 是否存在环
在每项 DFS 中,每个课程初始值是 0 , 访问过的课程赋值 1 , 一次 DFS 完成后 赋值 -1
遇到 -1 说明该课程出发不存在环,返回 true ,如果是 1 说明在一次 DFS 中存在环
1 | var canFinish = function (numCourses, prerequisites) { |