2020.5.16

LeetCode题二百零七 课程表

突然得知线上考试的消息,心态有点小崩。

你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。
在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]
给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?

2020.5.16_第1张图片
解法

2020.5.16_第2张图片
2020.5.16_第3张图片
2020.5.16_第4张图片

自己没能写出来,学习了一下别人的方法。
这个方法就是通过两个哈希表分别记录点入度(某门课所需的先修课数)和出度的节点(需要某门课作为先修课的课)。然后入度为0的点对应的出度的节点分别减一(相当于删掉不需要先修课的课),并再次往返。若到按照此算法最后所有点的入度都删为零则证明可以,反之则不行。
总结一下没写出来的原因吧。其实这个删的思路还是可以想到的。但是如何转换为具体的操作。如何通过哈希表处理和保存并不断更新各点的入度和出度,这些方法我没有想到只能说还需努力。

你可能感兴趣的:(2020.5.16)