621. 任務排程器 (構造)
LeetCode: 621. 任務排程器
題目與上題相同
部落格指路; 621. 任務排程器 (優先佇列模擬)
題目大意:
給定一定數量的不同執行次數的任務, 相同任務執行完後會有 n 個時間的冷卻時間。
求最少執行完任務的時間。
構造
最後得到的公式(冷卻時間大於任務數量時): ( m a x E x c u − 1 ) ∗ ( n + 1 ) + m a x C o u n t (maxExcu - 1) * (n + 1) + maxCount (maxExcu−1)∗(n+1)+maxCount
冷卻時間少於任務數量的時候: len(tasks)
所以最後就是兩者取最大值.
( m a x E x c u − 1 ) ∗ ( n + 1 ) (maxExcu - 1) * (n + 1) (maxExcu−1)∗(n+1) 每個填入, 週期大於任務數量的時候,每次填入一個需要這麼多的時間。直到填完最多的執行次數的任務。
處理最後一行
+ m a x C o u n t +maxCount +maxCount 是最後填入週期 n + 1 的空格時, 最後剩下的就是填入這 maxCount 個數
根據理解
公式就可以換為
計算上最多執行次數的的任務與週期的需要的完成時間 (最後一行算多了 >> 不一定需要 n + 1 的時間 >> 最後一行只要最多執行次數的任務的數量即可 maxCount )
所以減去多加的 ( n + 1 − m a x C o u n t ) (n + 1 - maxCount) (n+1−maxCount)
( m a x E x c u ) ∗ ( n + 1 ) ) − ( n + 1 − m a x C o u n t ) (maxExcu)*(n+1)) - (n + 1 - maxCount) (maxExcu)∗(n+1))−(n+1−maxCount)
構造
func leastInterval(tasks []byte, n int) int {
cnt := map[byte]int{}
for _, c := range tasks{
cnt[c]++;
}
// maxExcu 最多的執行次數
// maxCount 與最多執行次數相同的任務數量
maxExcu, maxCount := 0, 0
for _, val := range cnt {
if val > maxExcu{
maxExcu, maxCount = val, 1
} else if val == maxExcu{
maxCount++
}
}
return int(math.Max(float64(((maxExcu-1)*(n+1))+maxCount), float64(len(tasks))))
//return int(math.Max(float64(((maxExcu)*(n+1)) - (n + 1 - maxCount)), float64(len(tasks))))
}
LeetCode構造題解: 任務排程器
相關文章
- 力扣 621. 任務排程器力扣
- 力扣-621. 任務排程器力扣
- 【LeetCode】每日一題621. 任務排程器LeetCode每日一題
- LeetCode每日一題--621. 任務排程器(雜湊表)LeetCode每日一題
- 任務排程
- Laravel 任務排程Laravel
- Airflow 任務排程AI
- LeetCode 621 任務排程器LeetCode
- 深入解讀Quartz任務排程器quartz
- Spark中資源排程和任務排程Spark
- 分散式任務排程分散式
- Nucleus PLUS任務排程
- linux 任務排程Linux
- Laravel 服務之任務排程Laravel
- 分散式排程任務-ElasticJob分散式AST
- Spring 指南(排程任務)Spring
- 聊聊PowerJob的任務排程
- 【Spark篇】---Spark資源排程和任務排程Spark
- 持續整合之hudson的構建任務排程
- laravel框架任務排程(定時執行任務)Laravel框架
- Windows 10任務排程器曝出新零日漏洞Windows
- LTS分散式任務排程部署分散式
- Linux 定時任務排程Linux
- Quartz任務排程快速入門quartz
- ZooKeeper分散式任務排程中心分散式
- 獨立任務最優排程
- 快速掌握SQL Server任務排程SQLServer
- Oracle任務排程工具學習Oracle
- 用海豚排程器定時排程從Kafka到HDFS的kettle任務指令碼Kafka指令碼
- 比特幣原始碼分析:任務排程器的使用比特幣原始碼
- 使用寶塔計劃任務啟動laravel排程器Laravel
- 分散式系統架構之構建你的任務排程中心分散式架構
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- Python任務排程模組APSchedulerPython
- 任務排程框架Quartz快速入門!框架quartz
- 任務排程的思考和總結
- Java定時任務排程詳解Java
- Crontab定時任務排程介紹