Leetcode 621任務排程

2021-10-05 07:49:58 字數 1086 閱讀 9147

首先統計同型別的任務數,然後從大到小排序(因為數量多的任務才會因為重複,需要間隔期)。

排序不影響結果,無論是三個a和兩個b,還是兩個a和三個b結果是一樣的。

想法是有多個桶(桶的個數取決於數量最多的任務數),桶的容量至少是n+1,桶內元素不重複,如果元素不能填滿,就需要填入冷卻時間。如果多餘元素數量大於等於桶內需要,就不會出現冷卻,執行時間等於任務數。

下圖來自官方題解,結合**加了注釋。

;簡化版

只有任務數最多的任務會留在最後乙個桶,這個桶後面不用補冷卻時間和其他任務。

bool

comp

(int

& a,

int& b)

class

solution

return

max(number,

(n+1)*

(num_task[0]

-1)+ len);}

};

leetcode 621 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...

LeetCode 621 任務排程器

給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...

LEETCODE 621任務排程器

採用用的比較多的統計詞頻的做法。先對char陣列中的字頻進行統計,然後排序。比如aaabbcc這種串且n 2,可以使a a a 然後把bc分別插進去。網上有很多討論一組空格可以直接放進去的部落格,次數就不說了。著重記錄一下以下情況 如 1 aaabbccddee,n 2 2 或者aabbcc,n 1...