Problem Link - Minimum Distance
You are given an array a, of n elements. Find the minimum index based distance between two distinct elements of the array, x and y. Return -1, if either x or y does not exist in the array.
Examples:
Input: arr[] = {1, 2}, x = 1, y = 2
Output: Minimum distance between 1 and 2 is 1.
Input: arr[] = {3, 4, 5}, x = 3, y = 5
Output: Minimum distance between 3 and 5 is 2.
Input: arr[] = {3, 5, 4, 2, 6, 5, 6, 6, 5, 4, 8, 3}, x = 3, y = 6
Output: Minimum distance between 3 and 6 is 4.
Input: arr[] = {2, 5, 3, 5, 4, 4, 2, 3}, x = 3, y = 2
Output: Minimum distance between 3 and 2 is 1.
Approach
- Initialize two indices i1 and i2 to -1 to store the most recent indices of x and y found during the traversal of the array.
- Initialize a variable mini to a large value (e.g., INT_MAX) to keep track of the minimum distance.
- Traverse through the array and find the indices of x and y,if both were found then calculate the distance between them and update the mini variable.if again we found the x or y, then calcuate the distance with previously found x or y and update the mini variable.
Code
int minDist(int a[], int n, int x, int y) {
// code here
int mini=INT_MAX;
int i1=-1;
int i2=-1;
for(int i=0;i<n;i++){
if(a[i]==x){
i1=i;
}
else if(a[i]==y){
i2=i;
}
if(i1!=-1&&i2!=-1){
mini=min(mini,abs(i2-i1));
}
}
if(i1==-1 || i2==-1){
return -1;
}
return mini;
}
Top comments (0)