数据结构与算法每日一题——链表(88. 合并两个有序数组)

45 阅读1分钟

88. 合并两个有序数组

/**
 * @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, m, nums2, n) {
    // 逆序排序
    let i = m - 1
    let j = n - 1
    let k = n + m - 1
    // 循环条件 i和j都>=0才循环
    while (i>=0 || j>=0) {
        // nums1循环完了之后 将nums2拼接在nums1前
        if (i < 0) {
            nums1[k] = nums2[j]
            k--
            j--
        }
        // nums2循环完了之后 将nums1拼接在nums1前
        else if(j<0){
            nums1[k]=nums1[i]
            k--
            i--
        }
        // nums1[i]和nums2[k]进行比较 ,谁大谁拼接
        else if (nums1[i] > nums2[j]) {
            nums1[k] = nums1[i]
            k--
            i--
        } else  {
            nums1[k] = nums2[j]
            k--
            j--
        }
    }
    // 最后返回nums1
    return nums1
};