LeetCode 筆記 - 88. Merge Sorted Array

題目在此 88. Merge Sorted Array

給定兩個 Sorting 後的數列,請合併它們

解題思維

沒什麼特別的,就是 Merge sort 的一部分
持續取出兩個數列的第一個中最小的,直到全部取完

這裡有個小地方需要注意的是,不需要回傳結果,直接修改 nums1
可以使用以下寫法來直接修改

1
nums1[:] = result

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
"""
Do not return anything, modify nums1 in-place instead.
"""

nums1[:] = nums1[:m]
nums2[:] = nums2[:n]

result = []

while nums1 and nums2:
if nums1[0] < nums2[0]:
value = nums1.pop(0)
else:
value = nums2.pop(0)
result.append(value)

if nums1:
result.extend(nums1)
if nums2:
result.extend(nums2)

nums1[:] = result

完成😊

相關文章