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?