LeetCode 🟡 2244. Minimum Rounds to Complete All Tasks
🔗 🟡 2244. Minimum Rounds to Complete All Tasks 1372
tags: Weekly Contest 289
貪心(Greedy)
計數(Counter)
題意
給定一個下標從 開始的整數陣列 ,其中 表示任務的難度,在每一回合中,可以完成 個或 個相同難度的任務。
返回完成所有任務所需要的最小回合數,如果無法完成所有任務,則返回 。
思路:貪心(Greedy) + 計數(Counter)
首先,由於我們每次完成的任務難度必須是相同的,所以我們可以先用 Counter
計算每個難度的任務數量 ,接著對不同難度的任務,考慮 即可。
再來想一下,何時無法完成任務,先把範圍縮小到 ,可以發現只有當 時無法完成任務;接著放大範圍到 ,假定每次都完成 個任務,則可以根據 的不同情況考慮:
- 若 ,則 可以被 整除,每次完成 個任務,所以需要 回合;
- 若 ,則可以完成 輪 個任務,但還剩下 個任務。不過我們可以將其中 輪的 個任務,結合剩下的 個任務,置換成 輪完成 個任務,所以需要 回合;
- 若 ,則可以完成 輪 個任務,剩下的 個任務需要 輪完成,所以需要 回合。
以上三種情況可以合併成 回合,因此我們只要檢查 的情況即可。
複雜度分析
- 時間複雜度:
- 空間複雜度:
1 | class Solution: |
1 | class Solution { |
寫在最後
Cover photo is generated by @たろたろ, thanks for their work!
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 十六個天亮!
評論
WalineGiscus