LeetCode每日一題--621. 任務排程器(雜湊表)
題目:跳轉至 621. 任務排程器
給你一個用字元陣列 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]
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
}
};
思路:
暴力解決,先統計各個任務出現的次數,從大到小排序,每次取出間斷n相等數量的陣列合,各自數量減1,如果沒有符合的任務填空則待命狀態數量加1,總時長就是任務總數加上待命出現的次數。
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
int res=tasks.size();
if(n==0)
return res;
unordered_map<char,int> mp;
for(auto &x:tasks)
mp[x]++;
priority_queue<int> reaminTasks;
for(auto [c,n]:mp)
reaminTasks.push(n);
int standby=0;
while(!reaminTasks.empty()){
vector<int> tmp;
for(int i=0;i<=n;++i){
int maxTaskSize=0;
if(!reaminTasks.empty()){
maxTaskSize=reaminTasks.top();
reaminTasks.pop();
--maxTaskSize;
if(maxTaskSize>0)
tmp.push_back(maxTaskSize);
}
else if(!tmp.empty())
++standby;
}
for(auto &x:tmp)
reaminTasks.push(x);
}
return res+standby;
}
};
相關文章
- 【LeetCode】每日一題621. 任務排程器LeetCode每日一題
- 621. 任務排程器 (構造)
- 力扣 621. 任務排程器力扣
- 力扣-621. 任務排程器力扣
- LeetCode 621 任務排程器LeetCode
- 【LeetCode1】【雜湊】每日一題 day30LeetCode每日一題
- 任務排程
- Laravel 任務排程Laravel
- Airflow 任務排程AI
- 深入解讀Quartz任務排程器quartz
- 雜湊表(雜湊表)詳解
- Spark中資源排程和任務排程Spark
- 分散式任務排程分散式
- Nucleus PLUS任務排程
- linux 任務排程Linux
- 雜湊表(雜湊表)原理詳解
- Laravel 服務之任務排程Laravel
- 幾道和雜湊(雜湊)表有關的面試題面試題
- Aloha:一個分散式任務排程框架分散式框架
- 雜湊表
- 分散式排程任務-ElasticJob分散式AST
- Spring 指南(排程任務)Spring
- 聊聊PowerJob的任務排程
- 【Spark篇】---Spark資源排程和任務排程Spark
- laravel框架任務排程(定時執行任務)Laravel框架
- 【尋跡#3】 雜湊與雜湊表
- Windows 10任務排程器曝出新零日漏洞Windows
- 新一代分散式任務排程框架分散式框架
- 【LeetCode 36_雜湊表】Valid SudokuLeetCode
- LTS分散式任務排程部署分散式
- Linux 定時任務排程Linux
- Quartz任務排程快速入門quartz
- ZooKeeper分散式任務排程中心分散式
- 獨立任務最優排程
- 快速掌握SQL Server任務排程SQLServer
- Oracle任務排程工具學習Oracle
- 字串雜湊表字串
- 6.7雜湊表