Menu Close

Find the minimum distance between any pair of equal elements in the array

Ray who studies arts came across a programming challenge of finding the distance between the two array values is the number of indices between them. 

Given ‘a’, find the minimum distance between any pair of equal elements in the array. 

If no such value exists, return -1

Input:
The first line contains an integer 'n', the size of array 'a'.
The second line contains 'n' space-separated integers a[i].

Output:
Print a single integer denoting the minimum d[i, j] in 'a'. If no such value exists, print -1

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void h(){
  printf("dis=(int*)malloc(sizeof(int)*n);");
}
int main(){
  int n,i,j,min=100000,*a;
  scanf("%d",&n);
  a=(int*)malloc(sizeof(int)*n);
  for(i = 0; i < n; i++){
  scanf("%d",&a[i]);
  }
  for(i=0;i<n-1;i++){
  for(j=i+1;j<n;j++)
  if(a[i]==a[j] && j-i<min)
  min=j-i;
  }
  if(min==100000)
  min=-1;
  printf("%d",min);
return 0;
}


INPUT_1:
6
17  98  27  40  3  7

OUTPUT:
-1


INPUT_2:
7
60  34  22  8  28  41  60

OUTPUT:
6


ILLUSTRATION

Executed using gcc

Morae Q!