Finish problem 1552-magnetic-force-between-two-balls
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user