Skip to content

Commit 7d86b68

Browse files
Solved 'Merge Sorted Arrays' challenge (CoffeelessProgrammer#2 IP)
1 parent 7090b9d commit 7d86b68

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// Challenge: Given two sorted numerical arrays,
2+
// merge them into a sorted array
3+
//
4+
// Example:
5+
// Input: [1,3,8,9] and [2,5,7]
6+
// Output: [1,2,3,5,7,8,9]
7+
8+
9+
function mergeSortedArrays(arr1: number[], arr2: number[]): Array<number> { // Time Complexity: O(a+b)
10+
const largeSorted: number[] = [];
11+
12+
13+
for(let i=0,j=0; i <= arr1.length && j <= arr2.length;) {
14+
15+
if (i === arr1.length && j === arr2.length) {
16+
// console.log("Processed both arrays!")
17+
break;
18+
}
19+
20+
if (i === arr1.length) {
21+
largeSorted.push(arr2[j]);
22+
++j;
23+
// console.log('Pushing', largeSorted[largeSorted.length-1], ' New j:', j);
24+
continue;
25+
}
26+
27+
if (j === arr2.length) {
28+
largeSorted.push(arr1[i]);
29+
++i;
30+
// console.log('Pushing', largeSorted[largeSorted.length-1], ' New i:', i);
31+
continue;
32+
}
33+
34+
if (arr1[i] < arr2[j]) {
35+
largeSorted.push(arr1[i]);
36+
++i;
37+
// console.log('Pushing', largeSorted[largeSorted.length-1], ' New i:', i);
38+
} else {
39+
largeSorted.push(arr2[j])
40+
++j;
41+
// console.log('Pushing', largeSorted[largeSorted.length-1], ' New j:', j);
42+
}
43+
}
44+
45+
return largeSorted;
46+
}
47+
48+
49+
const arr1 = [1,3,8,9];
50+
const arr2 = [2,5,7];
51+
52+
console.log(mergeSortedArrays(arr1, arr2)); // O(a+b)
53+
console.log(mergeSortedArrays([4,6,30], [0,3,4,31])); // O(a+b)
54+
console.log(mergeSortedArrays([2,4,8,16,32], [])); // O(a+b)
55+
console.log(mergeSortedArrays([], [])); // O(a+b)

0 commit comments

Comments
 (0)