You've successfully subscribed to The Poor Coder | Hackerrank Solutions
Great! Next, complete checkout for full access to The Poor Coder | Hackerrank Solutions
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Hackerrank - Minimum Distances Solution

Hackerrank - Minimum Distances Solution

Beeze Aal
Beeze Aal

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))