题目:
88.合并两个有序数组
思路:
返回nums1,两个数组是有序的。nums1的size刚好是m+n。
思路是从打到小依次把元素放入nums1相应的位置。定义三个指针。cur指向nums1的末尾,往前扫描;p_1 = m-1,表示nums1依次大的元素;p_2 = n - 1.
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."""#cur = len(nums1) - 1cur = m + n - 1p_1 = m - 1p_2 = n - 1while p_1 >= 0 and p_2 >= 0:if nums1[p_1] >= nums2[p_2]:nums1[cur] = nums1[p_1]p_1 -= 1else:nums1[cur] = nums2[p_2]p_2 -= 1cur -= 1if p_1 < 0:# p_2还有元素未合并nums1[:p_2+1] = nums2[:p_2+1]# return nums1
