推导数学规律--完成任务的最短时间(任务调度器)

题目

在这里插入图片描述

题目解读与公式推导

题目解读:
字母代表不同的任务,给定的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
  • <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值