Merge Sorted Arrays

Problem statement

You get two ascending arrays, nums1 and nums2, with lengths m and n. Merge them into one sorted sequence. Keep the result inside nums1 (it already has room for m + n values).

Example:

Input:

nums1 = [1, 2, 3, 0, 0, 0], m = 3
nums2 = [2, 5, 6], n = 3

Expected output:

nums1 = [1, 2, 2, 3, 5, 6]

Practice on LeetCode: Merge Sorted Array

Golang Solution

func merge(nums1 []int, m int, nums2 []int, n int)  {
    result := make([]int, m+n)

    i, j, k := 0, 0, 0
    for i < m && j < n {
        if nums1[i] < nums2[j] {
            result[k] = nums1[i]
            i += 1
        } else {
            result[k] = nums2[j]
            j += 1
        }
        k += 1
    }

    for i < m {
        result[k] = nums1[i]
        i += 1
        k += 1
    }

    for j < n {
        result[k] = nums2[j]
        j += 1
        k += 1
    }

    for i = 0; i < m+n; i++ {
        nums1[i] = result[i] 
    }
}