题目
解题思路
两个 雷同品种 的工作之间必须有长度为整数 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不太了解官解