在csdn上发现这道题只有java或者cpp的解答,补个python版本的解法吧。
思路:
就是二分法,之后空一点了再写。
class Solution:
def maxLength(self, ribbons: List[int], k: int) -> int:
def possible(size):
num_rib = 0
for rib in ribbons:
num_rib += rib // size
return num_rib
left = 1
right = max(ribbons)
res = 0
while left <= right:
mid = (left + right) // 2
if possible(mid) < k :
right = mid - 1
else:
res = mid
left = mid + 1
return res