Leetcode专题[数组]-88-合并两个有序数组

力扣链接:
https://leetcode-cn.com/probl...
解题思路:

  1. 第一种最自然的解法:将两个数组合并然后重新排序,这个解法最容易想到也最简单,运行的时间复杂度也较高
  2. 队列法:可以将两个数组看做两个队列,按照从小到大的方式入一个新的队列,那么就需要两个指针,分别指向两个队列的队首开始遍历
func merge(nums1 []int, m int, nums2 []int, n int) {
    sorted := make([]int, 0, m+n)
    p1, p2 := 0, 0
    for {
        if p1 == m {
            sorted = append(sorted, nums2[p2:]...)
            break
        }
        if p2 == n {
            sorted = append(sorted, nums1[p1:]...)
            break
        }
        if nums1[p1] < nums2[p2] {
            sorted = append(sorted, nums1[p1])
            p1++
        } else {
            sorted = append(sorted, nums2[p2])
            p2++
        }
    }
    copy(nums1, sorted)
}

你可能感兴趣的:(golang)