题目:
给你两个按 非递减顺序 排列的整数数组 nums1
和 nums2
,另有两个整数 m
和 n
,分别表示 nums1
和 nums2
中的元素数目。
请你 合并 nums2
到 nums1
中,使合并后的数组同样按 非递减顺序 排列。
答案:
直接合并,排序
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[m:] = nums2
nums1.sort()
双指针:
将两个数组看作两个队列,每次从队列头部取出较小的那个放入结果中。
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.
"""
l1 = 0
l2 = 0
sorted = []
while l1 < m or l2 < n:
if l1 == m:
sorted.append(nums2[l2])
l2 += 1
elif l2 == n:
sorted.append(nums1[l1])
l1 += 1
elif nums1[l1] < nums2[l2]:
sorted.append(nums1[l1])
l1 += 1
else:
sorted.append(nums2[l2])
l2 += 1
nums1[:] = sorted