LeetCode简单题之下载插件
生活随笔
收集整理的這篇文章主要介紹了
LeetCode简单题之下载插件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
小扣打算給自己的 VS code 安裝使用插件,初始狀態下帶寬每分鐘可以完成 1 個插件的下載。假定每分鐘選擇以下兩種策略之一:
使用當前帶寬下載插件
將帶寬加倍(下載插件數量隨之加倍)
請返回小扣完成下載 n 個插件最少需要多少分鐘。
注意:實際的下載的插件數量可以超過 n 個
示例 1:
輸入:n = 2
輸出:2
解釋:
以下兩個方案,都能實現 2 分鐘內下載 2 個插件
方案一:第一分鐘帶寬加倍,帶寬可每分鐘下載 2 個插件;第二分鐘下載 2 個插件
方案二:第一分鐘下載 1 個插件,第二分鐘下載 1 個插件
示例 2:
輸入:n = 4
輸出:3
解釋:
最少需要 3 分鐘可完成 4 個插件的下載,以下是其中一種方案:
第一分鐘帶寬加倍,帶寬可每分鐘下載 2 個插件;
第二分鐘下載 2 個插件;
第三分鐘下載 2 個插件。
提示:
1 <= n <= 10^5
來源:力扣(LeetCode)
解題思路
??題目的做法不難,通常成長類的通關游戲都是先升級各種戰斗力然后才和boss決戰,在這里也一樣,我們可以先升級帶寬,然后再計算時間。當然這個需要一個簡單的證明,那就是在n比較小的時候,線性結果等價于指數的結果,很顯然在這道題中,比如n=1或者2的時候是符合的,當n大于2的時候就更不用說了,指數函數已經能夠甩線性函數很遠。
class Solution:def leastMinutes(self, n: int) -> int:return math.ceil(math.log2(n))+1
總結
以上是生活随笔為你收集整理的LeetCode简单题之下载插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之字符串转化后的各
- 下一篇: LeetCode简单题之完成一半题目