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的冷卻時...