题目链接:https://leetcode-cn.com/problems/merge-sorted-array/
难度:简单

描述:
给你两个按非递减顺序排列的整数数组nums1nums2,另有两个整数mn,分别表示nums1nums2中的元素数目。

请你合并nums2nums1中,使合并后的数组同样按非递减顺序排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n

提示:

  1. mn范围:[0, 200]
  2. m + n范围:[1, 200]

题解

  1. class Solution:
  2. def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
  3. i, j, k = m - 1, n - 1, m + n - 1
  4. while i >= 0 and j >= 0:
  5. if nums1[i] > nums2[j]:
  6. nums1[k] = nums1[i]
  7. i -= 1
  8. else:
  9. nums1[k] = nums2[j]
  10. j -= 1
  11. k -= 1
  12. # 若 j < 0而i >= 0说明nums1前面已经有序,不用填充
  13. while j >= 0:
  14. nums1[k] = nums2[j]
  15. j -= 1
  16. k -= 1