题目
题目解读与公式推导
题目解读:
字母代表不同的任务,给定的n是任务的延迟时间。
那么这个延迟时间是个什么意思呢?根据题目的描述此延迟时间的含义是:完成一个任务后如果还想继续完成相同的任务则需要n的延迟时间
。举个例子–n = 2
,如果此时我完成了A任务,则还需要隔n=2
的时间才能再次完成A任务,所以A后面可以接B或者C,同样对B和C也是如此需要隔这么长的时间。
数学公式推导:(count[maxSize] - 1) * (n + 1) + maxCount
- 假设数组
["A","A","A","B","B","C"],n = 2
,A的频率最高,记为count = 3,所以两个A之间必须间隔2个任务,才能满足题意并且是最短时间(两个A的间隔大于2的总时间必然不是最短),因此执行顺序为:A->X->X->A->X->X->A
,这里的X表示除了A以外其他字母,或者是待命,不用关心具体是什么,反正用来填充两个A的间隔的。上面执行顺序的规律是: 有count - 1
个A,其中每个A需要搭配n个X
,再加上最后一个A,所以总时间为(count - 1) * (n + 1) + 1
- 要注意可能会出现多个频率相同且都是最高的任务,比如
["A","A","A","B","B","B","C","C"]
,所以最后会剩下一个A和一个B,因此最后要加上频率最高的不同任务的个数maxCount
<