程序在python中查找跳伞运动员在k天内所需的最小太空飞机
假设我们有一个称为nums的数字列表,其中每个值代表一群希望一起跳伞的人。我们还有另一个值k,代表他们可以申请跳伞的天数。我们必须找到能够在k天内满足所有要求的飞机的最小容量。这些请求应按照发出的顺序完成,并且飞机每天只能飞行一次。
因此,如果输入像nums=[16,12,18,11,13],k=3,那么输出将为28,因为28人飞机可以将给定的请求按[16,12],[18],[11、13]。
为了解决这个问题,我们将遵循以下步骤-
如果nums为空,则
返回0
开始:=num的最大值,结束:=num的所有元素的总和
在开始<结束时,执行
结束:=中
开始:=中+1
如果temp+num>mid,则
除此以外,
天:=天+1
temp:=num
温度:=温度+数字
中:=(开始+结束)/2
天:=1,温度:=0
对于以num为单位的每个num
如果天数>k,则
除此以外,
返回开始
让我们看下面的实现以更好地理解-
例
class Solution:
def solve(self, nums, k):
if not nums:
return 0
start, end = max(nums), sum(nums)
while start < end:
mid = (start + end) //2
days = 1
temp = 0
for num in nums:
if temp + num > mid:
days += 1
temp = num
else:
temp += num
if days > k:
start = mid + 1
else:
end = mid
return start
ob = Solution()nums = [16, 12, 18, 11, 13]
k = 3
print(ob.solve(nums, k))输入值
[16, 12, 18, 11, 13], 3
输出结果
28
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短