LCS 01. 下载插件
找到所有可能的插件安装方案,把各方案时间保存在列表里。
class Solution(object):
def leastMinutes(self, n):
way = 1
t = 0
time = []
while way <= n:
k = int(ceil(float(n)/way))
time.append(k+t)
t += 1
way *= 2
return min(time)
因为宽带是加倍,所以根据数学推理最优的方法是加宽到足够程度直接一次下载
(运行速度更快)
class Solution(object):
def leastMinutes(self, n):
way = 1
t = 0
while way < n:
way *= 2
t += 1
return t + 1
动态规划
class Solution(object):
def leastMinutes(self, n):
if n <= 2:
return n
dp = [0 for i in range(n+1)]
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = dp[int((i+1)/2)] + 1
return dp[n]