Problems › TypeScript › data
The first repeat
A stream of ids is meant to be unique; the audit flags the first value that turns up twice.
- Scan left to right and stop at the first value that has appeared earlier.
- A value repeated later does not matter if a smaller repeat came first.
- No value repeats at all gives -1.
firstRepeating(values: list<int>) → int
Where you start
function firstRepeating(values: number[]): number {
}
Worked examples
| Call | Result |
|---|---|
firstRepeating([2,1,3,1]) | 1 |
firstRepeating([1,2,3]) | -1 |
firstRepeating([4,4]) | 4 |
firstRepeating([7,7,7]) | 7 |
Hint
A set of everything so far; the moment you add one that is already there, that is the answer.
Reference solution in TypeScript
function firstRepeating(values: number[]): number {
const seen = new Set<number>();
for (const v of values) {
if (seen.has(v)) return v;
seen.add(v);
}
return -1;
}