LeetCode 1199. 建造街区的最短时间(优先队列贪心)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1199. 建造街区的最短时间(优先队列贪心)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
你是個城市規劃工作者,手里負責管轄一系列的街區。在這個街區列表中 blocks[i] = t 意味著第 i 個街區需要 t 個單位的時間來建造。
由于一個街區只能由一個工人來完成建造。
所以,一個工人要么需要再召喚一個工人(工人數增加 1);要么建造完一個街區后回家。這兩個決定都需要花費一定的時間。
一個工人再召喚一個工人所花費的時間由整數 split 給出。
注意:如果兩個工人同時召喚別的工人,那么他們的行為是并行的,所以時間花費仍然是 split。
最開始的時候只有 一個 工人,請你最后輸出建造完所有街區所需要的最少時間。
示例 1: 輸入:blocks = [1], split = 1 輸出:1 解釋:我們使用 1 個工人在 1 個時間單位內來建完 1 個街區。示例 2: 輸入:blocks = [1,2], split = 5 輸出:7 解釋:我們用 5 個時間單位將這個工人分裂為 2 個工人, 然后指派每個工人分別去建造街區,從而時間花費為 5 + max(1, 2) = 7示例 3: 輸入:blocks = [1,2,3], split = 1 輸出:4 解釋: 將 1 個工人分裂為 2 個工人,然后指派第一個工人去建造最后一個街區, 并將第二個工人分裂為 2 個工人。 然后,用這兩個未分派的工人分別去建造前兩個街區。 時間花費為 1 + max(3, 1 + max(1, 2)) = 4提示: 1 <= blocks.length <= 1000 1 <= blocks[i] <= 10^5 1 <= split <= 100來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-time-to-build-blocks
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
貪心算法(Greedy Algorithm)之霍夫曼編碼
- 類似霍夫曼樹,將最小的兩個合并,再放回優先隊列,使得數量大的被加的次數少
68 ms 9.7 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1199. 建造街区的最短时间(优先队列贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 968. 监控二叉树(
- 下一篇: LeetCode 688. “马”在棋盘