【golang】leetcode中级-任务调度器

题目

【golang】leetcode中级-任务调度器_第1张图片

解题思路

两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,
因此
执行任务的时间将由任务将其冷却时间决定,相同种类的任务数量越多,其冷却时间也就越长,为了使总体时间缩短,我们应该更早的让其进入冷却时间

核心思路:就是先找出相同元素数量最大的元素A

我们将执行一个任务及其冷却时间的等待看作一个周期
那么 完成任务A的总时间就等于(a-1)个周期加上最后一次执行即可完成A任务
对于剩下的任务
我们可以进行分类讨论

如果其余任务都可以在A 的冷却时间内完成,那么总时间即为A所使用的时间,其余任务可以忽略不计。

如果A的冷却时间内放不下其他的所有任务,那么则将时间较长的放入,剩余的另行计算
1.如果剩下的相同种类的任务中数量有与A并列第一的
那么最后一次执行任务的时候,也需要执行这个任务一次
2.其他任务长度都比A少,但数量很多,再完成A 的计算之后重复即可

代码

func leastInterval(tasks []byte, n int) int {
    max:=func(x,y int)int{
        if x

复杂度分析

【golang】leetcode中级-任务调度器_第2张图片

ovo不太理解官解

你可能感兴趣的:(golang)