LeetCode 621. 任务调度器(贪心)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 621. 任务调度器(贪心)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個用字符數組表示的 CPU 需要執行的任務列表。其中包含使用大寫的 A - Z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,并且每個任務都可以在 1 個單位時間內執行完。CPU 在任何一個單位時間內都可以執行一個任務,或者在待命狀態。
然而,兩個相同種類的任務之間必須有長度為 n 的冷卻時間,因此至少有連續 n 個單位時間內 CPU 在執行不同的任務,或者在待命狀態。
你需要計算完成所有任務所需要的最短時間。
示例 1: 輸入: tasks = ["A","A","A","B","B","B"], n = 2 輸出: 8 執行順序: A -> B -> (待命) -> A -> B -> (待命) -> A -> B.注: 任務的總個數為 [1, 10000]。 n 的取值范圍為 [0, 100]。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/task-scheduler
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 貪心解題
- 我找出最多的那個任務,假如是A
- 在每個兩個A之間至少需要 n 個空位(可以干別的任務,也可以空著)
- 最后一個A后面還要跟著一些與A數量相同的任務(例如,1B,1C等)
- 還有一點,如果沒有沖突,那么答案至少是總任務數量
總結
以上是生活随笔為你收集整理的LeetCode 621. 任务调度器(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 216. 组合总和 I
- 下一篇: LeetCode 1054. 距离相等的