88.go 608 B

123456789101112131415161718192021222324252627282930313233343536
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func merge(nums1 []int, m int, nums2 []int, n int) {
  6. nums := make([]int, 0)
  7. i, j := 0, 0
  8. // pit: add the smaller one "once a time"
  9. for i < m && j < n {
  10. if nums1[i] < nums2[j] {
  11. nums = append(nums, nums1[i])
  12. i++
  13. } else {
  14. nums = append(nums, nums2[j])
  15. j++
  16. }
  17. }
  18. if i == m && j == n {
  19. } else if i == m {
  20. nums = append(nums, nums2[j:]...)
  21. } else {
  22. nums = append(nums, nums1[i:]...)
  23. }
  24. for i = 0; i < m+n; i++ {
  25. nums1[i] = nums[i]
  26. }
  27. }
  28. func test88() {
  29. n1 := []int{1, 1, 2, 9, 0, 0, 0}
  30. n2 := []int{2, 3, 3}
  31. merge(n1, 4, n2, 3)
  32. fmt.Println(n1)
  33. }