给定一个必须按顺序完成的作业列表,每个作业都需要一个插槽来完成,如果在完成一项工作之后接下来的两个插槽不能完成相同的工作(冷却插槽),则要花多长时间来完成全部工作)?但是,可以在此冷却槽中分配其他作业。
例如,
[9,10,9,8] => output: 5
因为作业将被分配为[9 10 _ 9 8]
。
1.首先,9需要两个冷却点_ _。因此,我们从开始9 _ _
。
2.下一个作业10与上一个作业9不同,因此我们可以分配_之一。然后我们将拥有9 10 _
。
3.第三,现在不能分配9,因为第一个作业9是相同的作业,需要冷却时间。9 10 _ 9
。
4.最后,8与其他任何前两个作业都不相同,因此可以在9之后立即分配,并且由于这是最后一个作业,因此不需要冷却时间。最终列表为9 10 _ 9 8
,预期输出为5,即点数(或插槽数)
测试用例:
[1,2,3,4,5,6,7,8,9,10] => output : 10 ([1 2 3 4 5 6 7 8 9 10])
[1,1,1] => output: 7 ([1 _ _ 1 _ _ 1])
[3,4,4,3] => output: 6 ([3 4 _ _ 4 3])
[3,4,5,3] => output: 4 ([3 4 5 3])
[3,4,3,4] => output : 5 ([3 4 _ 3 4])
[3,3,4,4] => output : 8 ([3 _ _ 3 4 _ _ 4])
[3,3,4,3] => output : 7 ([3 _ _ 3 4 _ 3])
[3,2,1,3,-4] => output : 5 ([3 2 1 3 -4])
[] => output : 0 ([])
[-1,-1] => output : 4 ([-1 _ _ -1])
输入值可以是任何整数(负数,0,正数)。作业列表的长度为0 <=长度<= 1,000,000。
输出将是一个整数,即插槽总数,在测试用例中将其表示为输出。括号内的列表是如何生成输出。
获胜标准
代码高尔夫球
[]
吗?