给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:
输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]
- 采用双指针分别将两个数组
nums1
和数组nums2
从后向前插入到数组nums1
中 - 指针
i
标记数组 nums1 当前比较位置,开始位数组元素最后位 - 指针
j
标记数组 nums2 当前比较位置,开始位数组元素最后位 - 指针
k
表示结果从后向前当前可插入位置,默认nums1
后n
位都是可插入位,将nums1
中元素插入当前可插入位后, 从 指针i
至k
都是可插入位 - 循环将数组
nums2
插入到数组nums1
- 当数组
nums1
当前可比较数据位i
大于等于 0 并且数组nums1
当前位置值比nums2
当前位置值大时,将数组nums1
当前位置数组 插入到k
位置 ,i
位指针向前挪一位 - 否则将
nums2
当前位置数据插入到k
位置,j
位指针向前挪一位 - 插入完成后将当前插入位置指针
k
向前挪一位,进行下一次插入
funcmerge(nums1 []int, mint, nums2 []int, nint) { vari, j=m-1, n-1fork:=m+n-1; k>=0; k-- { ifj<0|| (i>=0&&nums1[i] >nums2[j]) { nums1[k] =nums1[i] i-- } else { nums1[k] =nums2[j] j-- } } }