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.
"""
while m > 0 and n > 0:
if nums1[m-1] < nums2[n-1]:
nums1[m-1+n] = nums2[n-1]
n = n - 1
else:
nums1[m-1+n],nums1[m-1] = nums1[m-1],nums1[m-1+n]
m = m - 1
if m == 0 and n > 0:
nums1[:n] = nums2[:n]
因为两个数组都是sorted的,所有只要从两个数组最大的数字开始比较就可以完成,nums1[m-1] < nums2[n-1],则num1最后一位换成num2[n-1],如果nums1[m-1] >= nums2[n-1],交换num1种nums1[m-1]和nums1[m-1+n]的位置,还有一种情况就是m减完了,n还有,因为各数组已经排好序了,这时候num1前面那些被换成0了,只需要把num2剩下的替换掉num1对应的部分即可。