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原始碼解析原始碼
- 杭電多校第10場 6887 Task Scheduler(DP)
- react之schedulerReact
- 深入解析Scheduler
- Camunda User Task:Task Listeners
- Task03 && Task 04
- [20210325]SCHEDULER$_PROGRAM_ARG SCHEDULER$_JOB_ARG在哪裡.txt
- 力扣-621. 任務排程器力扣
- 力扣 621. 任務排程器力扣
- 621. 任務排程器 (構造)
- Oracle Database Scheduler整理OracleDatabase
- Kubernetes Scheduler淺析
- Quartz job scheduler 學習quartz
- Quartz框架中的Schedulerquartz框架
- 定時任務scheduler
- The Linux Scheduler: a Decade of Wasted CoresLinuxAST
- Event loop的macro task和micro taskOOPMac
- 走進Task(1):什麼是Task
- 【LeetCode】每日一題621. 任務排程器LeetCode每日一題
- task 7
- Kubernetes 漫遊:kube-scheduler
- Kubernetes scheduler學習筆記筆記
- Reactor中的Thread和SchedulerReactthread
- 關於golang的goroutine schedulerGolang
- Apache Dolphin Scheduler - Dockerfile 詳解ApacheDocker
- .NET - Task.Run vs Task.Factory.StartNew
- Task01&Task02學習筆記筆記
- Task1&Task2學習筆記筆記
- Task.Run(async () =>{}) 和 Task.Run(() =>{})區別
- celery筆記三之task和task的呼叫筆記
- Spark Task 的執行流程② - 建立、分發 TaskSpark
- task1
- [Javascript] Paralle TaskJavaScript
- task02
- joyful pandas task
- React Scheduler 原始碼詳解(1)React原始碼
- Spring Boot 參考指南(Quartz Scheduler)Spring Bootquartz
- Scheduler in Oracle Database 10g(轉)OracleDatabase