From cfecbd4a1816415494a864973aa19bec447f786f Mon Sep 17 00:00:00 2001 From: xibeifeng <394042583@qq.com> Date: Fri, 13 Jun 2025 14:54:08 +0800 Subject: [PATCH] Update --- ...345\272\217\346\225\260\347\273\204-88.js" | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git "a/\345\217\214\346\214\207\351\222\210/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204-88.js" "b/\345\217\214\346\214\207\351\222\210/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204-88.js" index 2117c9e..b159812 100644 --- "a/\345\217\214\346\214\207\351\222\210/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204-88.js" +++ "b/\345\217\214\346\214\207\351\222\210/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204-88.js" @@ -1,5 +1,11 @@ /* * @lc app=leetcode.cn id=88 lang=javascript + +https://leetcode.cn/problems/merge-sorted-array/description/ +给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 +请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 +注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 + * * [88] 合并两个有序数组 */ @@ -12,31 +18,15 @@ * @param {number} n * @return {void} Do not return anything, modify nums1 in-place instead. */ -let merge = function (arr1, m, arr2, n) { - // 两个指针指向数组非空位置的末尾 - let i = m - 1; - let j = n - 1; - // 第三个指针指向第一个数组的末尾 填充数据 - let k = arr1.length - 1; - - while (i >= 0 && j >= 0) { - let num1 = arr1[i]; - let num2 = arr2[j]; - - if (num1 > num2) { - arr1[k] = num1; - i--; - } else { - arr1[k] = num2; - j--; +var merge = function(nums1, m, nums2, n) { + let p1 = m - 1, p2 = n - 1, p = m + n - 1; + while (p2 >= 0) { // nums2 还有要合并的元素 + // 如果 p1 < 0,那么走 else 分支,把 nums2 合并到 nums1 中 + if (p1 >= 0 && nums1[p1] > nums2[p2]) { + nums1[p--] = nums1[p1--]; // 填入 nums1[p1] + } else { + nums1[p--] = nums2[p2--]; // 填入 nums2[p1] + } } - k--; - } - - while (j >= 0) { - arr1[k] = arr2[j]; - j--; - k--; - } }; // @lc code=end