E-88. Merge Sorted Array

# O(n+m), O(1)
# 从尾部开始往前双指针. 注意退出条件是 >= 0.
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.
        """
        p, p1, p2 = m + n -1, m -1, n -1
        while p1 >= 0 and p2 >= 0:
            if nums1[p1] > nums2[p2]:
                nums1[p] = nums1[p1]
                p1 -= 1
            else:
                nums1[p] = nums2[p2]
                p2 -= 1
        
            p -= 1
        
        if p2 >= 0:
            nums1[:p2 + 1] = nums2[:p2 + 1]

Last updated

Was this helpful?