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

Posted kisekipurin2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 第29场 双周赛 题目4 题解相关的知识,希望对你有一定的参考价值。

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

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

5435. 并行课程 II

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

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

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

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

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

以上是关于LeetCode 第29场 双周赛 题目4 题解的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第69场双周赛

Leetcode第51场双周赛总结+题解

LeetCode 双周赛 101,DP/中心位贪心/裴蜀定理/Dijkstra/最小环

LeetCode 第 55 场双周赛 / 第 247 场周赛

LeetCode第 30 场双周赛题解

leetcode第 46 场双周赛