Sunny-117 / js-challenges

✨✨✨ Challenge your JavaScript programming limits step by step

Home Page:https://juejin.cn/column/7244788137410560055

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

合并两个有序数组

lzxjack opened this issue · comments

双指针法

/**
 * 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
 * @param nums1
 * @param m
 * @param nums2
 * @param n
 */
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
  // 初始化两个指针的指向,初始化 nums1 尾部索引k
  let i = m - 1;
  let j = n - 1;
  let k = m + n - 1;

  while (i >= 0 && j >= 0) {
    // 取较大的值,从末尾往前填补
    if (nums1[i] >= nums2[j]) {
      nums1[k] = nums1[i];
      i--;
      k--;
    } else {
      nums1[k] = nums2[j];
      j--;
      k--;
    }
  }

  // nums2 留下的情况,特殊处理一下
  while (j >= 0) {
    nums1[k] = nums2[j];
    j--;
    k--;
  }
}