88. 合并两个有序数组

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6]

  1. //时间O(m+n),空间O1
  2. func merge(nums1 []int, m int, nums2 []int, n int) {
  3. for p1, p2, tail := m-1, n-1, m+n-1; p1 >= 0 || p2 >= 0; tail-- {
  4. var cur int
  5. if p1 == -1 {
  6. cur = nums2[p2]
  7. p2--
  8. } else if p2 == -1 {
  9. cur = nums1[p1]
  10. p1--
  11. } else if nums1[p1] > nums2[p2] {
  12. cur = nums1[p1]
  13. p1--
  14. } else {
  15. cur = nums2[p2]
  16. p2--
  17. }
  18. nums1[tail] = cur
  19. }
  20. }