Leetcode-Medium 621. Task Scheduler
題目描述
給定一個char陣列表示CPU需要執行的任務。它包含大寫字母A到Z,其中不同的字母代表不同的任務。每項任務都可以在一個時間間隔內完成。對於每個間隔,CPU可以完成一個任務或空閒。但是有規定一個非負整數n代表兩個相同任務之間需要至少n個時間單位。球最少數量的時間單位完成所有任務。
需要返回CPU將完成所有給定任務所需的最少間隔數。
例項:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8
Explanation: A -> B -> idle -> A -> B -> idle -> A -> B.
思路
dicussion 分享的思路concise Java Solution O(N) time O(26) space,通過分析人物佇列的規律來計算:
首先考慮出現次數最多的字元,我們可以先確定它們的相對位置,然後將它們用作框架來插入剩餘的不常用的字元
通過上面的分析,我們可以發現最少任務時間為:(最多工數-1)*(n + 1) + (相同最多工的任務個數)。
假設AAAABBBBCCDE,n=3,那麼時間為:(NUM(A)-1)*(3+1)+2=14
程式碼實現
class Solution:
def leastInterval(self, tasks: List[str], n: int) -> int:
c=collections.Counter(tasks)
mc,tie_ct=c.most_common(1)[0][1],0
for k,v in c.most_common()[1:]:
if v==mc:
tie_ct+=1
else:
break
return max(len(tasks),(mc-1)*n+mc+tie_ct)
參考資料
- Task Scheduler - LeetCode [圖片上傳失敗...(image-60182f-1551694438422)]
- Leetcode 621. Task Scheduler(貪心) | 張慕暉的部落格
- concise Java Solution O(N) time O(26) space - LeetCode Discuss [圖片上傳失敗...(image-899c54-1551694438422)]
- [LeetCode]621. Task Scheduler 任務安排 題解 - Fanny123 - 部落格園 [圖片上傳失敗...(image-5eb8e8-1551694438421)]
- LeetCode-621:Task Scheduler (任務排程) -- medium - 大樹先生的部落格 - CSDN部落格
相關文章
- cornerstone中delayed_task,timer_task及scheduler原始碼解析原始碼
- Scheduler&Task&Worker&Thread&Request&Session&Connection OF MSSQLthreadSessionSQL
- SQL-based Administrative Task Scheduler in DB2 9.5SQLDB2
- Windows10系統task scheduler服務無法啟動如何解決Windows
- 621. 任務排程器 (構造)
- 力扣 621. 任務排程器力扣
- 力扣-621. 任務排程器力扣
- Camunda User Task:Task Listeners
- Fair Scheduler與Capacity Scheduler介紹AI
- react之schedulerReact
- 深入解析Scheduler
- RxJava之SchedulerRxJava
- Oracle Scheduler概述Oracle
- Event loop的macro task和micro taskOOPMac
- task 7
- 全面學習ORACLE Scheduler特性(7)Scheduler丟擲的EventsOracle
- .NET - Task.Run vs Task.Factory.StartNew
- Oracle Database Scheduler整理OracleDatabase
- Mysql 作業(Scheduler)MySql
- oracle scheduler任務Oracle
- Oracle DBMS_SCHEDULEROracle
- 【LeetCode】每日一題621. 任務排程器LeetCode每日一題
- Spark Task 的執行流程② - 建立、分發 TaskSpark
- celery筆記三之task和task的呼叫筆記
- Task.Run(async () =>{}) 和 Task.Run(() =>{})區別
- task1
- [Javascript] Paralle TaskJavaScript
- 定時任務scheduler
- Quartz job scheduler 學習quartz
- Quartz框架中的Schedulerquartz框架
- goroutine 排程器(scheduler)Go
- 10G SCHEDULER 特性
- Task.Run(), Task.Factory.StartNew() 和 New Task() 的行為不一致分析
- 全面學習ORACLE Scheduler特性(7)使用Events之Scheduler丟擲的EventsOracle
- Spark Task 的執行流程④ - task 結果的處理Spark
- Task 0 Go初探Go
- JS Task2JS
- C++ async taskC++