合并两个有序数组——面试算法
题目:
// 88. 合并两个有序数组
// nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
这题应该也可以用别的方法去做,例如快慢指针
我这里用了最简单的倒序比大小方法,挺高频的,面试问过好几次
package main
import "fmt"
func main() {
nums1 := []int{1, 2, 3, 0, 0, 0}
nums2 := []int{2, 5, 6}
merge(nums1, 3, nums2, 3)
}
func merge(nums1 []int, m int, nums2 []int, n int) {
// 倒序
leng := len(nums1) - 1
m--
n--
for m >= 0 && n >= 0 && leng >= 0 {
if nums1[m] > nums2[n] {
nums1[leng] = nums1[m]
m--
leng--
} else {
nums1[leng] = nums2[n]
n--
leng--
}
}
if n >= 0 {
nums1[leng] = nums2[n]
n--
leng--
}
if m >= 0 {
nums1[leng] = nums1[m]
m--
leng--
}
fmt.Println(nums1)
}