二分查找一个合适的距离,(最大头尾相减,最小1),可以让全部球放入筐子。每当框子和框子的间距大于等于当前的尝试的距离,证明可以放个球。当球放完,当前距离可以,查找更大距离。
class Solution:
def maxDistance(self, position: List[int], m: int) -> int:
position.sort()
right = position[-1] - position[0]
left = 1
def binarysearch(dis, position, m):
lastpos = 0
count = 1
for i in range(1, len(position)):
if position[i] - position[lastpos] >= dis:
lastpos = i
count += 1
if count == m:
return True
return False
ans = -1
while left <= right:
mid = (left + right)//2
if binarysearch(mid, position, m):
ans = mid
left = mid + 1
else:
right = mid - 1
return ans