看到以前的一个疑问:列表中元素可以任意调用,不考虑顺序,怎么处理?例题是621题,复习一下。
1 统计各元素数量,把出现次数最多(x个)的元素按冷却时间放置好,冷却时间加上任务时间为n+1,t是完成n个任务的时间长度
A '' '' A '' '' A '' '' A
t = (x-1)*(n+1)+1
2 题中说每种任务的时间间隔和完成时间都相同,把其他任务插入间隔时间中,则总时间长度和上面相同
A 'B' 'B' A 'B' 'C' A 'B' '' A
t = (x-1)*(n+1)+1
3 当有m个同样最多的元素时(m<x),
A 'B' '' A 'B' '' A 'B' '' A B
t = (x-1)*(n+1)+ n
A 'B' 'C' A 'B' 'C' A 'B' 'C' A B C D E
先将间隔填满,把多余元素放到最后。这种情况即数组长度大于 所有的A加间隔n 的情况
4 当m>x时,可直接把元素插到每个间隔最后,这样的时间长度实际上是数组长度。
dic = {}
#记录任务出现次数
for item in li:
if item not in dic:
dic[item] = 1
else:
dic[item] += 1
li1 = list(dic.values()) #各任务出现次数
ma = max(li1) #最大次数
c = li1.count(ma) #最大次数个数
t = (ma-1)*(n+1)+ c #总时间长度
return t if t > len(li) else len(li) #总时间长度或数组长度
感觉还是半懂半不懂的
1763

被折叠的 条评论
为什么被折叠?



