Skip to content

Commit 8c612ac

Browse files
Fixing the Code
1 parent cb339ad commit 8c612ac

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

dynamic_programming/longest_sub_array.py

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"""
1111

1212

13-
def longest_sub_array(arr: list):
13+
def longest_subarray(arr: list):
1414
"""
1515
Find the longest continuous subarray with the maximum sum.
1616
@@ -21,41 +21,37 @@ def longest_sub_array(arr: list):
2121
A Integer which is the max subarray sum in the whole array.
2222
2323
Examples:
24-
>>> longest_sub_array([1, 2, 3, 2, 5])
24+
>>> longest_subarray([1, 2, 3, 2, 5])
2525
13
2626
27-
>>> longest_sub_array([5, -4, 3, -2, 1])
27+
>>> longest_subarray([5, -4, 3, -2, 1])
2828
5
2929
30-
>>> longest_sub_array([1, 2, 3, -2, 5])
30+
>>> longest_subarray([1, 2, 3, -2, 5])
3131
9
3232
33-
>>> longest_sub_array([10, 20, -30, 40, 50])
33+
>>> longest_subarray([10, 20, -30, 40, 50])
3434
90
3535
36-
>>> longest_sub_array([])
36+
>>> longest_subarray([])
3737
0
3838
"""
3939

40-
max_so_far = arr[0]
41-
max_ending_here = arr[0]
42-
max_len = 1
43-
curr_len = 1
40+
if not arr:
41+
return 0
42+
43+
max_sum = arr[0]
44+
current_sum = arr[0]
4445

4546
for i in range(1, len(arr)):
46-
if max_ending_here < 0:
47-
max_ending_here = arr[i]
48-
curr_len = 1
47+
if arr[i] > (current_sum + arr[i]):
48+
current_sum = arr[i]
4949
else:
50-
max_ending_here += arr[i]
51-
curr_len += 1
52-
if max_ending_here > max_so_far:
53-
max_so_far = max_ending_here
54-
max_len = curr_len
55-
elif max_ending_here == max_so_far:
56-
max_len = max(max_len, curr_len)
57-
58-
return max_len
50+
current_sum += arr[i]
51+
52+
max_sum = max(max_sum, current_sum)
53+
54+
return max_sum
5955

6056

6157
if __name__ == "__main__":

0 commit comments

Comments
 (0)