Finish problem 1011-capacity-to-ship-packages-within-d-days
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user