-
-
Notifications
You must be signed in to change notification settings - Fork 46.6k
/
Copy pathmax_sub_array_sum.py
42 lines (32 loc) · 1.1 KB
/
max_sub_array_sum.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
def maxSubArraySum(arr, size):
"""
Finds the maximum sum of a subarray within the given array using Kadane's algorithm.
Args:
arr (list): The input array of numbers.
size (int): The size of the array.
Returns:
int: The maximum sum of a subarray within the array.
Example:
>>> arr = [-2, -3, 4, -1, -2, 5, -3]
>>> maxSubArraySum(arr, len(arr))
6
In this example, the input array is [-2, -3, 4, -1, -2, 5, -3]. The maximum sum of a subarray
within this array is 6, which corresponds to the subarray [4, -1, -2, 5].
>>> arr = [-3, -4, 5, -1, 2, -4, 6, -1]
>>> maxSubArraySum(arr, len(arr))
8
References:
https://en.wikipedia.org/wiki/Maximum_subarray_problem
"""
max_till_now = arr[0]
max_ending = 0
for i in range(size):
max_ending = max_ending + arr[i]
if max_ending < 0:
max_ending = 0
elif max_till_now < max_ending:
max_till_now = max_ending
return max_till_now
if __name__ == "__main__":
import doctest
doctest.testmod()