Skip to content

Commit 41ae67d

Browse files
committed
Add problem 88 - Merge Sorted Array
1 parent ea9ab56 commit 41ae67d

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import List
2+
3+
4+
class MergeSortedArray:
5+
@staticmethod
6+
def merge(nums1: List[int], m: int, nums2: List[int], n: int) -> List[int]:
7+
# Indices to keep track of nums1 and nums2
8+
i, j = m - 1, n - 1
9+
# Current index
10+
index = m + n - 1
11+
# Process both arrays
12+
while i >= 0 and j >= 0:
13+
if nums1[i] > nums2[j]:
14+
nums1[index] = nums1[i]
15+
i -= 1
16+
else:
17+
nums1[index] = nums2[j]
18+
j -= 1
19+
index -= 1
20+
# Process remaining elements
21+
while i >= 0:
22+
nums1[index] = nums1[i]
23+
i -= 1
24+
index -= 1
25+
while j >= 0:
26+
nums1[index] = nums2[j]
27+
j -= 1
28+
index -= 1
29+
return nums1
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import unittest
2+
3+
from problems.array.merge_sorted_array import MergeSortedArray
4+
5+
6+
class TestMergeSortedArray(unittest.TestCase):
7+
8+
def setUp(self):
9+
self.merge_sorted_array = MergeSortedArray()
10+
11+
def test_both_non_empty(self):
12+
nums1 = [1, 2, 3, 0, 0, 0]
13+
nums2 = [2, 5, 6]
14+
m = 3
15+
n = 3
16+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [1, 2, 2, 3, 5, 6])
17+
18+
def test_empty_nums2(self):
19+
nums1 = [1, 2, 3]
20+
nums2 = []
21+
m = 3
22+
n = 0
23+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [1, 2, 3])
24+
25+
def test_empty_nums1(self):
26+
nums1 = [0, 0, 0]
27+
nums2 = [1, 2, 3]
28+
m = 0
29+
n = 3
30+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [1, 2, 3])
31+
32+
def test_empty_both(self):
33+
nums1 = []
34+
nums2 = []
35+
m = 0
36+
n = 0
37+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [])
38+
39+
def test_single_element_nums1(self):
40+
nums1 = [1]
41+
nums2 = []
42+
m = 1
43+
n = 0
44+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [1])
45+
46+
def test_single_element_nums2(self):
47+
nums1 = [0]
48+
nums2 = [1]
49+
m = 0
50+
n = 1
51+
self.assertEqual(self.merge_sorted_array.merge(nums1, m, nums2, n), [1])
52+
53+
54+
if __name__ == '__main__':
55+
unittest.main()

0 commit comments

Comments
 (0)