用Python找出k条相同长度的最大长度的程序
假设我们有一个正数列表,表示色带长度并且还有一个值k。我们可以根据需要多次切割丝带,我们必须找到最大长度r,这样我们可以有k条长度为r的丝带。如果我们找不到这样的解决方案,则返回-1。
因此,如果输入类似于色带=[1,2,5,7,15]k=5,那么输出将是5,因为我们可以将大小为15的色带切成3条长度为5的条带。然后把7号的丝带剪成2号和5号。还有另外一个5号的丝带,所以我们总共得到了5条5号的丝带。
示例
让我们看看以下实现以获得更好的理解-
def solve(ribbons, k):
left = 0
right = max(ribbons)
while left < right:
mid = (left + right + 1) //2
if sum((ribbonLen // mid for ribbonLen in ribbons)) >= k:
left = mid
else:
right = mid - 1
if left:
return left
return -1
ribbons = [1, 2, 5, 7, 15]
k = 5
print(solve(ribbons, k))输入
[1, 2, 5, 7, 15], 5输出结果
5
热门推荐
10 情侣祝福语古文简短独特
11 酒店伴娘祝福语简短
12 晚上甜蜜的祝福语简短
13 给新娘简短的祝福语
14 当爸爸的简短祝福语
15 洛宁新年祝福语大全简短
16 新年祝福语简短搞笑幽默
17 结婚祝福语大全简短霸气
18 新人结婚祝福语简短高端