Problems › TypeScript › warmup
Find the two that add up
A reconciliation tool looks for the two entries that together explain a difference.
- Return the two positions, counting from zero, smaller position first.
- If several pairs would work, return the one whose second position comes first.
- No pair means an empty list.
- A value may not be paired with itself, but two equal values at different positions are fine.
pairSummingTo(values: list<int>, target: int) → list<int>
Where you start
function pairSummingTo(values: number[], target: number): number[] {
}
Worked examples
| Call | Result |
|---|---|
pairSummingTo([2,7,11,15], 9) | [0,1] |
pairSummingTo([3,2,4], 6) | [1,2] |
pairSummingTo([3,3], 6) | [0,1] |
pairSummingTo([1,2], 99) | [] |
Hint
Walk once, and for each value ask whether the number that would complete it has already gone by.
Reference solution in TypeScript
function pairSummingTo(values: number[], target: number): number[] {
const seen = new Map<number, number>();
for (let j = 0; j < values.length; j++) {
const need = target - values[j];
if (seen.has(need)) return [seen.get(need)!, j];
if (!seen.has(values[j])) seen.set(values[j], j);
}
return [];
}