LeetCode – 88. Merge Sorted Array

題目連結: https://leetcode.com/problems/merge-sorted-array/

Time complexity: O(m+n)

// Test case:
// nums1: [], nums2: []
// nums1: [], nums2: [1]
// nums1: [1], nums2: []
// nums1: [1,2], nums2: [4,6]
// nums1: [4,6], nums2: [1,2]
// nums1: [1,2,3], nums2: [1,4]    
    func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
        var i = m - 1
        var j = n - 1
        var k = m + n - 1

        while i >= 0 && j >= 0 {
            if nums2[j] > nums1[i] {
                nums1[k] = nums2[j]
                j -= 1
                k -= 1
            } else {
                nums1[k] = nums1[i]
                i -= 1
                k -= 1
            }
        }

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