LeetCode88. 合并两个有序数组Golang版

LeetCode88. 合并两个有序数组Golang版1. 问题描述2. 思路2.1. 思路1声明一个新数组,最后再赋值给nums12.2. 思路2从后向前填充3. 代码思路1代码func merge(nums1 []int, m int, nums2 []int, n int) {var...

LeetCode88. 合并两个有序数组Golang版

1. 问题描述

2. 思路

2.1. 思路1

声明一个新数组,最后再赋值给nums1

2.2. 思路2

从后向前填充

3. 代码

思路1代码

func merge(nums1 []int, m int, nums2 []int, n int)  {
    var nums []int = make([]int, m+n)
    i := 0
    j := 0
    k := 0

    for i < m && j < n {
        if nums1[i] < nums2[j] {
            nums[k] = nums1[i]
            i++
            k++
        } else {
            nums[k] = nums2[j]
            j++
            k++
        }
    }

    nums = nums[0:k]

    if i >= m {
        nums = append(nums,nums2[j:n]...)
    }

    if j >= n {
        nums = append(nums,nums1[i:m]...)
    }
    
    for ii := 0; ii < len(nums); ii++ {
        nums1[ii] = nums[ii]
    }
}

2. 思路2代码

func merge(nums1 []int, m int, nums2 []int, n int)  {
    i := m - 1
    j := n - 1
    k := m + n - 1
    for i >= 0 && j >= 0 {
        if nums1[i] > nums2[j] {
            nums1[k] = nums1[i]
            i--
            k--
        } else {
            nums1[k] = nums2[j]
            j--
            k--
        }
    }

    for j >= 0 {
        nums1[k] = nums2[j]
        j--
        k--
    }
}

本文标题为:LeetCode88. 合并两个有序数组Golang版