每日leetcode第0046天 0207. Course Schedule

这道题叫课程表,是经典的拓扑排序的题目,这里使用深度优先和宽度优先都可以。

我选择使用更好理解得宽度优先搜索。

 

先是输入。

输入课程的数量,输入每个课程要预先学习的课程,到-1就没了。

我创建了一堆变量:

总课程数量n。

已经学习的数量learn_quantity,方便最后校对。

某课程要预先学习某课程pre_course,里面存是否。

某课程剩余还要学习的前置课程remain_pre,方便判断是否可以添加进队列了。

某课程学习过没有learned,开始想在进队列前判断,后来发现没必要,这个变量没用上。

队列q,保存可以准备开始学习的课程。

主程序读完数据后,将不需要前置课的课推进队列,开始进入学习模式。

每学习一门,检查其余课会不会因为学习它后剩余前置课数量变成0,变的话就推入队列。

直到队列全部学习完毕。

最后比较学过的和总数是否相等来输出。



关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。