採用用的比較多的統計詞頻的做法。先對char陣列中的字頻進行統計,然後排序。
比如aaabbcc這種串且n=2,可以使a _ _ a _ _ a _ _,然後把bc分別插進去。
網上有很多討論一組空格可以直接放進去的部落格,次數就不說了。著重記錄一下以下情況
如(1)aaabbccddee,n=2;
(2)或者aabbcc,n=1(這種是maxcnt>n的情況)
即由最大詞頻空出的格仔無法將剩餘的字母全部放入,這種情況下的最短排程時間應該就是字串(char陣列)長度。
這也是**中當使用公式計算出來的值小於字串長度的情況,
即 tasks.length>(times[25]-1)*(n+1)+25-i 時
貼乙個別人的說法,感覺很貼切,可以從優先佇列的角度(或者是貪心也行),每次都選取最多的那個
Leetcode 621任務排程
首先統計同型別的任務數,然後從大到小排序 因為數量多的任務才會因為重複,需要間隔期 排序不影響結果,無論是三個a和兩個b,還是兩個a和三個b結果是一樣的。想法是有多個桶 桶的個數取決於數量最多的任務數 桶的容量至少是n 1,桶內元素不重複,如果元素不能填滿,就需要填入冷卻時間。如果多餘元素數量大於等...
leetcode 621 任務排程器
給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...
LeetCode 621 任務排程器
給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為n的冷卻時...