Finish problem 0410-split-array-largest-sum
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
def pieces_needed(nums: list[int], limit: int) -> int:
|
||||
pieces = 1
|
||||
total = limit
|
||||
for num in nums:
|
||||
if total - num >= 0:
|
||||
total -= num
|
||||
else:
|
||||
total = limit - num
|
||||
pieces += 1
|
||||
return pieces
|
||||
|
||||
|
||||
class Solution:
|
||||
def splitArray(self, nums: list[int], k: int) -> int:
|
||||
lo, hi = max(nums), sum(nums)
|
||||
while lo < hi:
|
||||
limit = (lo + hi) // 2
|
||||
if pieces_needed(nums, limit) > k:
|
||||
lo = limit + 1
|
||||
else:
|
||||
hi = limit
|
||||
return lo
|
||||
@@ -0,0 +1,13 @@
|
||||
import pytest
|
||||
from solution import Solution
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"nums, k, expected",
|
||||
[
|
||||
([7, 2, 5, 10, 8], 2, 18),
|
||||
([1, 2, 3, 4, 5], 2, 9),
|
||||
],
|
||||
)
|
||||
def test_split_array(nums, k, expected):
|
||||
assert Solution().splitArray(nums, k) == expected
|
||||
Reference in New Issue
Block a user