給你乙個用字元陣列 tasks 表示的 cpu 需要執行的任務列表。其中每個字母表示一種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。在任何乙個單位時間,cpu 可以完成乙個任務,或者處於待命狀態。
然而,兩個 相同種類 的任務之間必須有長度為整數 n 的冷卻時間,因此至少有連續 n 個單位時間內 cpu 在執行不同的任務,或者在待命狀態。
你需要計算完成所有任務所需要的 最短時間 。
示例 1:
輸入:tasks =
["a"
,"a"
,"a"
,"b"
,"b"
,"b"
], n =
2輸出:8
解釋:a -
> b -
>
(待命)
-> a -
> b -
>
(待命)
-> a -
> b
在本示例中,兩個相同型別任務之間必須間隔長度為 n =
2 的冷卻時間,而執行乙個任務只需要乙個單位時間,所以中間出現了(待命)狀態。
示例 2:
輸入:tasks =
["a"
,"a"
,"a"
,"b"
,"b"
,"b"
], n =
0輸出:6
解釋:在這種情況下,任何大小為 6 的排列都可以滿足要求,因為 n =0[
"a",
"a",
"a",
"b",
"b",
"b"]
["a"
,"b"
,"a"
,"b"
,"a"
,"b"][
"b",
"b",
"b",
"a",
"a",
"a"]..
.諸如此類
示例 3:
輸入:tasks =
["a"
,"a"
,"a"
,"a"
,"a"
,"a"
,"b"
,"c"
,"d"
,"e"
,"f"
,"g"
], n =
2輸出:16
解釋:一種可能的解決方案是:
a -> b -
> c -
> a -
> d -
> e -
> a -
> f -
> g -
> a -
>
(待命)
->
(待命)
-> a -
>
(待命)
->
(待命)
-> a
1 <= task.length <= 104
tasks[i] 是大寫英文本母
n 的取值範圍為 [0, 100]
/**
* @author: ffzs
* @date: 2020/12/5 下午5:05
* @date: 2020/12/5 下午6:21
621 任務排程器
621.任務排程器 給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必...
621 任務排程器
給你乙個用字元陣列 tasks 表示的 cpu 需要執行的任務列表。其中每個字母表示一種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。在任何乙個單位時間,cpu 可以完成乙個任務,或者處於待命狀態。然而,兩個 相同種類 的任務之間必須有長度為整數 n 的冷卻時...
621 任務排程器
2020 06 12 任務排程器 給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種...