Merge Sorted Array
Description
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
- The number of elements initialized in nums1 and nums2 are m and n respectively.
- You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2.
Example:
Input: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3Output: [1,2,2,3,5,6]
Constraints:
-10^9 <= nums1[i], nums2[i] <= 10^9
nums1.length == m + n
nums2.length == n
Solution(javascript)
/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
const merge = (nums1, m, nums2, n) => {
const aux = (arr1 = [], arr2 = [], bound, counter1, counter2) => {
if (counter2 >= nums2.length) {
return
}
if ((arr1[counter1] <= arr2[counter2]) && (counter1 <= bound)) {
return aux(arr1, arr2, bound, counter1 + 1, counter2)
}
if (counter1 <= bound) {
arr1.splice(counter1, 0, arr2[counter2])
arr1.splice(arr1.length - 1, 1)
return aux(arr1, arr2, bound + 1, counter1, counter2 + 1)
}
arr1.splice(counter1, 1, arr2[counter2])
return aux(arr1, arr2, bound, counter1 + 1, counter2 + 1)
}
aux(nums1, nums2, m - 1, 0, 0)
}