Leetcode NO 621 任務排程器

2021-10-11 10:23:13 字數 2822 閱讀 4901

給你乙個用字元陣列 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 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種...