Problems › TypeScript › data
Interleave two lists
Two queues for two registers are interleaved so every other customer comes from each.
- Take one from the first list, then one from the second, and so on.
- When one list runs out, append whatever remains of the other.
alternatingMerge(first: list<int>, second: list<int>) → list<int>
Where you start
function alternatingMerge(first: number[], second: number[]): number[] {
}
Worked examples
| Call | Result |
|---|---|
alternatingMerge([1,2,3], [9]) | [1,9,2,3] |
alternatingMerge([1], [4,5]) | [1,4,5] |
alternatingMerge([1,2], [3,4]) | [1,3,2,4] |
alternatingMerge([], [1,2]) | [1,2] |
Hint
Loop up to the longer length and take each element that still exists.
Reference solution in TypeScript
function alternatingMerge(first: number[], second: number[]): number[] {
const result: number[] = [];
const n = Math.max(first.length, second.length);
for (let i = 0; i < n; i++) {
if (i < first.length) result.push(first[i]);
if (i < second.length) result.push(second[i]);
}
return result;
}