共计 800 个字符,预计需要花费 2 分钟才能阅读完成。
题目
解题思路
两个 雷同品种 的工作之间必须有长度为整数 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 不太了解官解
正文完