LeetCode 第29场 双周赛 题目4 题解

第一次参加 LeetCode 的比赛,花了1小时多一点才AK,不过还是感觉挺好玩的。

前面3题实在太无聊了,就不说了。只记录一下有意思的第4题。

5435. 并行课程 II

题意:给你一个整数 n 表示某所大学里课程的数目,编号为 1 到 n ,数组 dependencies 中, dependencies[i] = [xi, yi] 表示一个先修课的关系,也就是课程 xi 必须在课程 yi 之前上。同时你还有一个整数 k 。

在一个学期中,你 最多 可以同时上 k 门课,前提是这些课的先修课在之前的学期里已经上过了。

请你返回上完所有课最少需要多少个学期。题目保证一定存在一种上完所有课的方式。

题解:很明显要尽可能早上完课,主要受制的因素是依赖关系最深的课程,所以求出每个课程的依赖深度,然后每次找到所有可以学习的课程,若这些课程总数超过 k ,则选择前 k 个依赖最深的课程。也就是说,能学就尽量学,假如有很多课程可以学,则优先解决最“瓶颈”的课程。

看到有种把“瓶颈”用出度来度量的算法,不知道是他们对还是我对,或者都对。

猜你喜欢

转载自www.cnblogs.com/KisekiPurin2019/p/13200845.html