Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit cfecbd4

Browse files
authored
Update
1 parent 402a887 commit cfecbd4

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed
Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
/*
22
* @lc app=leetcode.cn id=88 lang=javascript
3+
4+
https://leetcode.cn/problems/merge-sorted-array/description/
5+
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
6+
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
7+
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
8+
39
*
410
* [88] 合并两个有序数组
511
*/
@@ -12,31 +18,15 @@
1218
* @param {number} n
1319
* @return {void} Do not return anything, modify nums1 in-place instead.
1420
*/
15-
let merge = function (arr1, m, arr2, n) {
16-
// 两个指针指向数组非空位置的末尾
17-
let i = m - 1;
18-
let j = n - 1;
19-
// 第三个指针指向第一个数组的末尾 填充数据
20-
let k = arr1.length - 1;
21-
22-
while (i >= 0 && j >= 0) {
23-
let num1 = arr1[i];
24-
let num2 = arr2[j];
25-
26-
if (num1 > num2) {
27-
arr1[k] = num1;
28-
i--;
29-
} else {
30-
arr1[k] = num2;
31-
j--;
21+
var merge = function(nums1, m, nums2, n) {
22+
let p1 = m - 1, p2 = n - 1, p = m + n - 1;
23+
while (p2 >= 0) { // nums2 还有要合并的元素
24+
// 如果 p1 < 0,那么走 else 分支,把 nums2 合并到 nums1 中
25+
if (p1 >= 0 && nums1[p1] > nums2[p2]) {
26+
nums1[p--] = nums1[p1--]; // 填入 nums1[p1]
27+
} else {
28+
nums1[p--] = nums2[p2--]; // 填入 nums2[p1]
29+
}
3230
}
33-
k--;
34-
}
35-
36-
while (j >= 0) {
37-
arr1[k] = arr2[j];
38-
j--;
39-
k--;
40-
}
4131
};
4232
// @lc code=end

0 commit comments

Comments
 (0)