Skip to content

Commit 538320d

Browse files
committed
feat: merge sorted array
1 parent 30a1ef9 commit 538320d

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

js/merge_sorted_array.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* @Author: Chacha
3+
* @Date: 2022-05-19 23:27:39
4+
* @Last Modified by: Chacha
5+
* @Last Modified time: 2022-05-19 23:28:56
6+
*/
7+
8+
/**
9+
*
10+
* 来源:https://leetcode-cn.com/problems/merge-sorted-array/
11+
*
12+
* 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
13+
* 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
14+
*
15+
* 示例 1:
16+
* 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
17+
* 输出:[1,2,2,3,5,6]
18+
*
19+
* 示例 2:
20+
* 输入:nums1 = [1], m = 1, nums2 = [], n = 0
21+
* 输出:[1]
22+
*
23+
*/
24+
const nums1 = [1, 2, 3, 0, 0, 0];
25+
const m = 3;
26+
const nums2 = [2, 5, 6];
27+
const n = 3;
28+
29+
const merge = (num1, m, num2, n) => {
30+
let i = m - 1;
31+
let j = n - 1;
32+
let k = m + n - 1;
33+
34+
while (i >= 0 && j >= 0) {
35+
if (num1[i] > num2[j]) {
36+
num1[k] = num1[i];
37+
i--;
38+
k--;
39+
} else {
40+
num1[k] = num2[j];
41+
j--;
42+
k--;
43+
}
44+
}
45+
46+
while (j >= 0) {
47+
num1[j] = num2[j];
48+
j--;
49+
}
50+
51+
return num1;
52+
};
53+
54+
console.log(merge(nums1, m, nums2, n));

0 commit comments

Comments
 (0)