621 任務排程器

2022-08-11 05:00:15 字數 1076 閱讀 6875

2020-06-12

任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。

其中包含使用大寫的 a - z 字母表示的26 種不同種類的任務。

任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu

在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。

然而,兩個相同種類的任務之間必須有長度為 n 的冷卻時間

,因此至少有連續 n 個單位時間內 cpu 在執行不同的任務,

或者在待命狀態。

你需要計算完成所有任務所需要的最短時間。

題解:

思路1:按出現次數大小排序 貪心演算法

冷卻時間n + 1為陣列arr的長度 arr的第0項是出現最多次的字元 第1項是第二多次的字元 以此類推

每次確定乙個字元

就把那個字元的次數-1

var leastinterval = function

(tasks, n) ; //

雜湊表 存tasks中有多少種字元

let len = tasks.length; //

tasks的總長度

for (let i = 0; i < tasks.length; i++)

let tmp = object.entries(hash); //

存每一種字元與次數的組合陣列 例如:[['a', 5], ['b', 3], ['c', 6]...]

let result =;

while (len)

result.push(...arr);

} //由於arr有可能出現最後一次有多餘的null 所以要把尾部的null都刪掉

while (result[result.length - 1] === null) result.splice(result.length - 1, 1);

return result.length; //

result的長度就是次數

};

621 任務排程器

621.任務排程器 給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必...

621 任務排程器

給你乙個用字元陣列 tasks 表示的 cpu 需要執行的任務列表。其中每個字母表示一種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。在任何乙個單位時間,cpu 可以完成乙個任務,或者處於待命狀態。然而,兩個 相同種類 的任務之間必須有長度為整數 n 的冷卻時...

leetcode 621 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...