forked from TheAlgorithms/Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmax_sum_subarray.py
40 lines (33 loc) · 1.13 KB
/
max_sum_subarray.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def max_sum_subarray(arr, k):
"""
Finds the maximum sum of a subarray of length k within the given array.[https://www.geeksforgeeks.org/window-sliding-technique/]
Args:
arr (list): The input array.
k (int): The length of the subarray.
Returns:
int: The maximum sum of a subarray of length k.
Examples:
>>> max_sum_subarray([1, 2, 3, 4, 5], 2)
9
>>> max_sum_subarray([1, 2, 3, 4, 5], 3)
12
>>> max_sum_subarray([1, 2, 3, 4, 5], 6)
Invalid input: k is larger than the array size
>>> max_sum_subarray([], 1)
Invalid input: k is larger than the array size
"""
n = len(arr)
if n < k or k <= 0:
print("Invalid input: k is larger than the array size or non-positive")
return None
# Calculate the sum of the first window of size k
window_sum = sum(arr[:k])
max_sum = window_sum
# Slide the window from start to end of the array
for i in range(n - k):
window_sum = window_sum - arr[i] + arr[i + k]
max_sum = max(max_sum, window_sum)
return max_sum
if __name__ == "__main__":
import doctest
doctest.testmod()