Hackerrank - Minimum Distances Solution
We define the distance between two array values as the number of indices between the two values. Given , find the minimum distance between any pair of equal elements in the array. If no such value exists, print .
For example, if , there are two matching pairs of values: . The indices of the 's are and , so their distance is . The indices of the 's are and , so their distance is .
Function Description
Complete the minimumDistances function in the editor below. It should return the minimum distance between any two matching elements.
minimumDistances has the following parameter(s):
- a: an array of integers
Input Format
The first line contains an integer , the size of array .
The second line contains space-separated integers .
Constraints
Output Format
Print a single integer denoting the minimum in . If no such value exists, print .
Sample Input
6
7 1 3 4 1 7
Sample Output
3
Explanation
Here, we have two options:
- and are both , so .
- and are both , so .
The answer is .
Solution in Python
from collections import defaultdict
def minimumDistances(a):
d = defaultdict(list)
for k,v in enumerate(a):
d[v].append(k)
md = 0
for v in d.values():
if not len(v)>1:
continue
if not md:
md = v[1]-v[0]
for i in range(len(v)-1):
dif = v[i+1]-v[i]
if dif<md:
md = dif
return md or -1
n = int(input())
a = list(map(int,input().split()))
print(minimumDistances(a))