Skip to content

Commit f3ef083

Browse files
committed
Add problem 53 - Maximum Subarray
1 parent 9a2c6aa commit f3ef083

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from typing import List
2+
3+
4+
class MaximumSubarray:
5+
@staticmethod
6+
def maxSubArray(nums: List[int]) -> int:
7+
local_maxima, global_maxima = nums[0], nums[0]
8+
for i in range(1, len(nums)):
9+
local_maxima = max(local_maxima + nums[i], nums[i])
10+
global_maxima = max(local_maxima, global_maxima)
11+
return global_maxima
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import unittest
2+
3+
from problems.dynamic_programming.maximum_subarray import MaximumSubarray
4+
5+
6+
class TestMaximumSubarray(unittest.TestCase):
7+
def setUp(self):
8+
self.maximum_subarray = MaximumSubarray()
9+
10+
def test_max_sub_array_single_element(self):
11+
self.assertEqual(self.maximum_subarray.maxSubArray([5]), 5)
12+
13+
def test_max_sub_array_all_negative(self):
14+
self.assertEqual(self.maximum_subarray.maxSubArray([-1, -2, -3, -4]), -1)
15+
16+
def test_max_sub_array_mixed(self):
17+
self.assertEqual(self.maximum_subarray.maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4]), 6)
18+
19+
def test_max_sub_array_all_positive(self):
20+
self.assertEqual(self.maximum_subarray.maxSubArray([1, 2, 3, 4, 5]), 15)
21+
22+
23+
if __name__ == '__main__':
24+
unittest.main()

0 commit comments

Comments
 (0)