Max sub-array slidey window

This commit is contained in:
Dan Buch 2023-10-28 08:21:39 -04:00
parent efb8f453ae
commit 3580198513
Signed by: meatballhat
GPG Key ID: A12F782281063434
2 changed files with 40 additions and 0 deletions

View File

@ -535,3 +535,22 @@ def copy_random_list(
ordered_copy[i].random = ordered_copy[hash_idx[hash(entry.random)]]
return ordered_copy[0]
def sum_max_sub_array(nums: list[int]) -> int:
window_size: int = 1
begin: int = 0
end: int = window_size
max_sum: int = sum(nums)
while end - begin <= len(nums):
while end < len(nums):
max_sum = max(max_sum, sum(nums[begin:end]))
begin += 1
end += 1
window_size += 1
begin = 0
end = window_size
return max_sum

View File

@ -444,3 +444,24 @@ def test_trie_busy():
assert trie.startsWith("rent") is True
assert trie.startsWith("beer") is True
assert trie.startsWith("jam") is True
@pytest.mark.parametrize(
("nums", "expected"),
[
(
[-2, 1, -3, 4, -1, 2, 1, -5, 4],
6,
),
(
[1],
1,
),
(
[5, 4, -1, 7, 8],
23,
),
],
)
def test_maximum_subarray(nums: list[int], expected: int):
assert stuff.sum_max_sub_array(nums) == expected