24 lines
661 B
Python
24 lines
661 B
Python
def balls_able(sorted_positions: list[int], min_distance) -> int:
|
|
balls = 1
|
|
anchor = sorted_positions[0]
|
|
for position in sorted_positions[1:]:
|
|
if position - anchor >= min_distance:
|
|
balls += 1
|
|
anchor = position
|
|
|
|
return balls
|
|
|
|
|
|
class Solution:
|
|
def maxDistance(self, position: list[int], m: int) -> int:
|
|
sorted_positions = sorted(position)
|
|
lo, hi = 1, max(position) - min(position)
|
|
while lo < hi:
|
|
limit = (lo + hi + 1) // 2
|
|
if balls_able(sorted_positions, limit) >= m:
|
|
lo = limit
|
|
else:
|
|
hi = limit - 1
|
|
|
|
return hi
|