题目

解题思路

两个 雷同品种 的工作之间必须有长度为整数 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<y{            return y        }        return x    }    tmp,res:=make(map[byte]int,0),0    for _,v:=range tasks{        tmp[v]++    }    ans:=0    for _,v:=range tmp{        ans = max(ans,v)    }    res = (ans-1)*(n+1)    for _,v:=range tmp{        if v==ans{            res++        }    }    if len(tasks)<=res{        return res    }    return len(tasks)}作者:Johnny-Young链接:https://leetcode-cn.com/problems/task-scheduler/solution/tan-xin-by-yhemin/起源:力扣(LeetCode)著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。

复杂度剖析

ovo不太了解官解