// https://www.interviewcake.com/question/cpp/merge-sorted-arrays?course=fc1§ion=array-and-string-manipulation
// Combine the sorted arrays into one large sorted array
// Using pointers
function mergeArrays(myArray, alicesArray) {
const len1 = myArray.length,
len2 = alicesArray.length,
merged = []
let i = 0,
j = 0
while (i < len1 && j < len2) {
const currI = myArray[i],
currJ = alicesArray[j]
if (currI <= currJ) {
merged.push(currI)
i++
} else {
merged.push(currJ)
j++
}
}
if (i < len1) merged.push(...myArray.slice(i))
if (j < len2) merged.push(...alicesArray.slice(j))
return merged
}
/*
Time Complexity - O(n)
Space complexity - O(n)
*/
/* ---------------------------------------------------------------------------- */
const testCases = [
[[], [1, 2, 3], [1, 2, 3]],
[[5, 6, 7], [], [5, 6, 7]],
[
[2, 4, 7],
[1, 3, 7],
[1, 2, 3, 4, 7, 7],
],
[
[1, 4, 6, 8],
[1, 7],
[1, 1, 4, 6, 7, 8],
],
]
for (const test of testCases) {
console.log(
JSON.stringify(mergeArrays(test[0], test[1])) === JSON.stringify(test[2])
)
}