Merge Sorted Array Visualizer & Step-by-Step Algorithm Solution

Merge two sorted integer arrays into nums1 as one sorted array using two pointers and an auxiliary merge buffer.

Category: arrays | Difficulty: Easy

Tags: Two Pointers, Array, Sorting

Merge Sorted Array

nums1 (m = 3, capacity = 6)
1
0
2
1
3
2
0
3
0
4
0
5
nums2 (n = 3)
2
0
5
1
6
2
result (Merge Buffer, size = 6)
0
1
2
3
4
5
100%
state
m3
n3
n1
n2
pos
totalCapacity6
Initialization
1/48
Explanation

Start merge: merge 3 elements from nums1 and 3 elements from nums2 into nums1.

Source Code
1function merge(nums1: number[], m: number, nums2: number[], n: number): void {
2 let n1 = 0;
3 let n2 = 0;
4 const result = new Array(m + n).fill(-1);
5 for (let pos = 0; pos < m + n; pos++) {
6 if (n1 >= m) {
7 result[pos] = nums2[n2];
8 n2++;
9 } else if (n2 >= n) {
10 result[pos] = nums1[n1];
11 n1++;
12 } else if (nums1[n1] < nums2[n2]) {
13 result[pos] = nums1[n1];
14 n1++;
15 } else {
16 result[pos] = nums2[n2];
17 n2++;
18 }
19 }
20 for (let i = 0; i < result.length; i++) {
21 nums1[i] = result[i];
22 }
23}