88. 合并两个有序数组
题解:
这是一个经典的双指针问题,我们可以使用两个指针分别指向nums1和nums2的最后一个元素,然后比较两个指针所指向的元素大小,将较大的元素放入nums1的末尾,并将对应的指针向前移动一位。重复这个过程,直到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."""p1 = m - 1p2 = n - 1tail = m + n - 1while p1 >= 0 and p2 >= 0:if nums1[p1] > nums2[p2]:nums1[tail] = nums1[p1]p1 -= 1else:nums1[tail] = nums2[p2]p2 -= 1tail -= 1while p2 >= 0:nums1[tail] = nums2[p2]p2 -= 1tail -= 1