Finish problem 1011-capacity-to-ship-packages-within-d-days

This commit is contained in:
Johan Sandoval
2026-07-23 13:56:14 -05:00
parent 13e85849b3
commit 25956cc25b
2 changed files with 42 additions and 0 deletions
@@ -0,0 +1,23 @@
def days_needed(weights: list[int], s: int) -> int:
days = 1
capacity = s
for weight in weights:
if capacity - weight >= 0:
capacity -= weight
else:
capacity = s - weight
days += 1
return days
class Solution:
def shipWithinDays(self, weights: list[int], days: int) -> int:
lo, hi = max(weights), sum(weights)
while lo < hi:
s = (lo + hi) // 2
if days_needed(weights, s) > days:
lo = s + 1
else:
hi = s
return lo
@@ -0,0 +1,19 @@
import pytest
from solution import Solution
@pytest.mark.parametrize(
"weights,days,expected",
[
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 5, 15),
([3, 2, 2, 4, 1, 4], 3, 6),
([1, 2, 3, 1, 1], 4, 3),
([1], 1, 1),
([5, 5, 5, 5], 4, 5),
([5, 5, 5, 5], 1, 20),
([10, 50, 100, 100, 50, 10], 1, 320),
([10, 50, 100, 100, 50, 10], 6, 100),
],
)
def test_ship_within_days(weights, days, expected):
assert Solution().shipWithinDays(weights, days) == expected