Finish problem 1552-magnetic-force-between-two-balls

This commit is contained in:
Johan Sandoval
2026-07-25 14:08:11 -05:00
parent 472bd07e11
commit 7d56ecae01
2 changed files with 36 additions and 0 deletions
@@ -0,0 +1,23 @@
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
@@ -0,0 +1,13 @@
import pytest
from solution import Solution
@pytest.mark.parametrize(
"position, m, expected",
[
([1, 2, 3, 4, 7], 3, 3),
([5, 4, 3, 2, 1, 1000000000], 2, 999999999),
],
)
def test_max_distance(position, m, expected):
assert Solution().maxDistance(position, m) == expected