java版:
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int p = m-1;
int q = n-1;
int k = m+n-1;
while(p>=0 && q>=0)
if(nums1[p] > nums2[q])
nums1[k--] = nums1[p--];
else
nums1[k--] = nums2[q--];
while(q>=0)
nums1[k--] = nums2[q--];
}
}
python版
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.
"""
k = m+n-1
p = m-1
q = n-1
while p>=0 and q>=0:
if nums1[p] > nums2[q]:
nums1[k] = nums1[p]
p -= 1; k -= 1
else:
nums1[k] = nums2[q]
q -= 1; k -= 1
while q >= 0:
nums1[k] = nums2[q]
k -= 1
q -= 1