题目

image.png
image.png

思路

image.png

代码

  1. class Solution:
  2. def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
  3. """
  4. Do not return anything, modify nums1 in-place instead.
  5. """
  6. end = len(nums1) - 1
  7. p1, p2 = m - 1, n - 1
  8. while p1 >= 0 and p2 >= 0:
  9. if nums1[p1] > nums2[p2]:
  10. nums1[end] = nums1[p1]
  11. end -= 1
  12. p1 -= 1
  13. else:
  14. nums1[end] = nums2[p2]
  15. end -= 1
  16. p2 -= 1
  17. # nums1[:end+1] = nums1[:p1+1] if p2 < 0 else nums2[:p2+1]
  18. nums1[:p2+1] = nums2[:p2+1]
  19. return nums1