合并两个有序数组——面试算法
题目:
// 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) }