📄 random_merge_sorted_arrays.js
/home/palash/git/misc/algorithms/random/random_merge_sorted_arrays.js
Language: js • Lines: 49
/**
 * @param {number[]} nums1 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, nums2) {
    var i= j = k = 0
    var result = []

    var takeFromSecond = () =>     {
        result[k] = nums2[j]
        j++

    }

    var takeFromFirst = () => {
        result[k] = nums1[i]
        i++
    }

    while(true){
        if(i === nums1.length && j==nums2.length){
            break;
        } 

        if(i === nums1.length) {
            takeFromSecond()
        } else if(j === nums2.length) {
            takeFromFirst()
        } else {
            if(nums1[i]<nums2[j]){
                takeFromFirst()
            } else {
                takeFromSecond()
            }
        }
        k++
    }

    return result
};

console.log([2,3,5], [1,4,5],merge([2,3,5], [1,4,5]))
console.log([0,3,4,31,32], [4,6,30],merge([0,3,4,31,32], [4,6,30]))
console.log([0,3,4,31,32], [4,6,30,54,62,63],merge([0,3,4,31,32], [4,6,30,54,62,63]))
console.log([], [1,2,3], merge([], [1,2,3]))
console.log([1,2,3], [], merge([1,2,3], []))
console.log([], [], merge([], []))