- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Maximum distance between two occurrences of same element in array in C
We are given with an array of integers. The array has multiple occurrences of the same elements. The task here is to find the maximum distance between any two same elements of the array. We will pick each element from the array starting from the left. Then we will find the last occurrence of that same number and store the difference between indexes. Now if this difference is maximum then return it.
Input
Arr[] = { 1,2,4,1,3,4,2,5,6,5 }
Output −Maximum distance between two occurrences of same element in array − 4
Explanation − The repeating numbers with indexes −
1. 1, first index 0, last index 3 distance=3-0-1=2 2. 2, first index 1, last index 6 distance=6-1-1=4 3. 5, first index 7, last index 9 distance=9-7-1=1 Maximum distance between two occurrences of same element : 4
Input
Arr[] = { 10,20,1,10,10,21,12,0 }
Output −Maximum distance between two occurrences of same element in array − 3
Explanation − The repeating numbers with indexes −
1. 10 first index 0, last index 4 distance=4-0-1=3 Maximum distance between two occurrences of same element : 3
Note − if the input array has no repeating number, then return -1
Approach used in the below program is as follows
We take an integer array having repeating numbers as Arr[]
The function maxDistance( int arr[],int n) is used to calculate the Maximum distance between two occurrences of the same element.
We initialize the variable maxD with -1.
Inside the for loop traverse the array of integers from the beginning.
In nested for loop traverse the remaining elements and search for repetitions if any. ( if ( arr[i] == arr[j] ).
If it is true then calculate the difference between numbers by subtracting the indexes. ( temp=j-i-1)
If this value is maximum found so far, then store it in maxD
Return maxD after traversing the whole array.
Example
#include <stdio.h> #include <math.h> int maxDistance(int arr[],int n){ int size = n; int maxD = -1; for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (arr[i] == arr[j]){ int temp=abs(j-i-1); maxD = maxD>temp?maxD:temp; } return maxD; } // Driver code int main(){ int Arr[] = {1,2,4,1,3,4,2,5,6,5}; printf("Maximum distance between two occurrences of same element in array:%d", maxDistance(Arr,10) ); return 0; }
Output
If we run the above code it will generate the following output −
Maximum distance between two occurrences of same element in array − 4