88. 合并两个有序数组

image.png

双指针

  1. package main
  2. import "fmt"
  3. func merge1(nums1 []int, m int, nums2 []int, n int) {
  4. n1:= m-1
  5. n2 :=n-1
  6. l := m+n-1
  7. for n1>=0&&n2>=0{
  8. if nums1[n1]<=nums2[n2]{
  9. nums1[l]= nums2[n2]
  10. n2--
  11. }else {
  12. nums1[l]= nums1[n1]
  13. n1--
  14. }
  15. l--
  16. }
  17. for n2>=0&&l>=0{
  18. nums1[l]= nums2[n2]
  19. n2--
  20. l--
  21. }
  22. }
  23. func merge(nums1 []int, m int, nums2 []int, n int) {
  24. n1:= m-1
  25. n2 :=n-1
  26. l := m+n-1
  27. for n2>=0{
  28. if n1>=0&&nums1[n1]>nums2[n2]{
  29. nums1[l]= nums1[n1]
  30. n1--
  31. }else {
  32. nums1[l]= nums2[n2]
  33. n2--
  34. }
  35. l--
  36. }
  37. }
  38. func main() {
  39. num1 := []int{1,2,3,0,0,0}
  40. merge(num1,3,[]int{2,5,6},3)
  41. fmt.Println(num1)
  42. num2 := []int{0}
  43. merge(num2,0,[]int{1},1)
  44. fmt.Println(num2)
  45. num3 := []int{4,5,6,0,0,0}
  46. merge(num3,3,[]int{1,2,3},3)
  47. fmt.Println(num3)
  48. }

image.png