forked from TheAlgorithms/Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkadanes_algorithm.py
42 lines (29 loc) · 1.03 KB
/
kadanes_algorithm.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
41
42
# Kadane's algorithm
def kadanes_algorithm(arr: list[int]) -> int:
"""
Function to find the maximum sum of a contiguous subarray using Kadane's algorithm
>>> kadanes_algorithm([-2, 1, -3, 4, -1, 2, 1, -5, 4])
6
>>> kadanes_algorithm([-1, -2, -3, -4])
-1
>>> kadanes_algorithm([5, 4, -1, 7, 8])
23
>>> kadanes_algorithm([1])
1
>>> kadanes_algorithm([-1, 2, 3, -5, 4])
5
"""
# initializing variables
max_current = arr[0] # store the current max sum
max_global = arr[0] # store the global max sum
# looping through the array starting at the second element
for i in range(1, len(arr)):
# update current max sum by choosing the maximum between
# current element alone or current element plus previous max
max_current = max(arr[i], max_current + arr[i])
# update global max sum if current max is larger
max_global = max(max_current, max_global)
return max_global
if __name__ == "__main__":
import doctest
doctest.testmod()