diff --git a/DIRECTORY.md b/DIRECTORY.md index 36acb3b97f1e..0e84558ba580 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -189,6 +189,7 @@ * [Find Triplets With 0 Sum](data_structures/arrays/find_triplets_with_0_sum.py) * [Index 2D Array In 1D](data_structures/arrays/index_2d_array_in_1d.py) * [Kth Largest Element](data_structures/arrays/kth_largest_element.py) + * [Maximum Subarray Sum](data_structures/arrays/maximum_subarray_sum.py) * [Median Two Array](data_structures/arrays/median_two_array.py) * [Monotonic Array](data_structures/arrays/monotonic_array.py) * [Pairs With Given Sum](data_structures/arrays/pairs_with_given_sum.py) diff --git a/data_structures/arrays/maximum_subarray_sum.py b/data_structures/arrays/maximum_subarray_sum.py new file mode 100644 index 000000000000..9bfa8948c0a1 --- /dev/null +++ b/data_structures/arrays/maximum_subarray_sum.py @@ -0,0 +1,34 @@ +def max_subarray_sum(arr: list[int]) -> int: + """ + Find the maximum sum of a subarray. + + Args: + arr: array of numbers. + + Returns: + Maximum sum possible in a subarray + + Examples: + >>> max_subarray_sum([1, 3, 2]) + 6 + + >>> max_subarray_sum([1, 2, 3, -1, 0]) + 6 + """ + ans = arr[0] + + for i in range(len(arr)): + current_sum = 0 + + for j in range(i, len(arr)): + current_sum = current_sum + arr[j] + ans = max(ans, current_sum) + + return ans + + +if __name__ == "__main__": + print(max_subarray_sum([1, 2, 3, 4, 5])) + import doctest + + doctest.testmod()