合并两个有序数组
方法一:先合并再排序
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."""# 先合并for i in range(m, m+n):nums1[i] = nums2[i - m]# 再排序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."""pos_1, pos_2 = m, ncount = 0while pos_1 > 0 and pos_2 > 0:# 从nums1的末尾开始填入数字pos = m + n - count - 1if nums1[pos_1 - 1] <= nums2[pos_2 - 1]:# 最大值出现在nums2的指针处,将值填入,并将pos2指针向前偏移nums1[pos] = nums2[pos_2 - 1]pos_2 -= 1else:# 最大值出现在nums1的指针处,将值填入,并将pos2指针向前偏移nums1[pos] = nums1[pos_1 - 1]pos_1 -= 1# 已填入的个数+1count += 1if not pos_1:# nums2中还有数据没有填入nums1[:pos_2] = nums2[:pos_2]