合并两个有序数组
- 逆序双指针
题目描述
示例 1:
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
C++实现
func merge(nums1 []int, m int, nums2 []int, n int) {
i,j := m-1,n-1
for k := m+n-1; k >= 0; k-- {
if i>=0 && j >= 0 {
if nums1[i] > nums2[j] {
nums1[k] = nums1[i]
i--
} else {
nums1[k] = nums2[j]
j--
}
} else if j >= 0 {
nums1[k] = nums2[j]
j--
}
}
}
golang实现
func merge(nums1 []int, m int, nums2 []int, n int) {
i,j := m-1,n-1
for k := m+n-1; k >= 0; k-- {
if i>=0 && j >= 0 {
if nums1[i] > nums2[j] {
nums1[k] = nums1[i]
i--
} else {
nums1[k] = nums2[j]
j--
}
} else if j >= 0 {
nums1[k] = nums2[j]
j--
}
}
}