-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharrays_firstDuplicate.py
More file actions
26 lines (21 loc) · 899 Bytes
/
arrays_firstDuplicate.py
File metadata and controls
26 lines (21 loc) · 899 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"""
Given an array a that contains only numbers in the range from 1 to a.length,
find the first duplicate number for which the second occurrence has the minimal index.
In other words, if there are more than 1 duplicated numbers,
return the number for which the second occurrence has a smaller index than the
second occurrence of the other number does. If there are no such elements, return -1.
Example
For a = [2, 1, 3, 5, 3, 2], the output should be firstDuplicate(a) = 3.
There are 2 duplicates: numbers 2 and 3.
The second occurrence of 3 has a smaller index than the second occurrence of 2 does,
so the answer is 3.
For a = [2, 2], the output should be firstDuplicate(a) = 2;
For a = [2, 4, 3, 5, 1], the output should be firstDuplicate(a) = -1.
"""
def firstDuplicate(a):
dup = set()
for val in a:
if val in dup:
return val
dup.add(val)
return -1