package main import ( "fmt" ) func merge(nums1 []int, m int, nums2 []int, n int) { nums := make([]int, 0) i, j := 0, 0 // pit: add the smaller one "once a time" for i < m && j < n { if nums1[i] < nums2[j] { nums = append(nums, nums1[i]) i++ } else { nums = append(nums, nums2[j]) j++ } } if i == m && j == n { } else if i == m { nums = append(nums, nums2[j:]...) } else { nums = append(nums, nums1[i:]...) } for i = 0; i < m+n; i++ { nums1[i] = nums[i] } } func test88() { n1 := []int{1, 1, 2, 9, 0, 0, 0} n2 := []int{2, 3, 3} merge(n1, 4, n2, 3) fmt.Println(n1) }