Program to find the maximum difference between the index of any two different numbers

09 Jun, 2022
Given an array of N integers. The task is to find the maximum difference between the index of any two different numbers. Note that there is a minimum of two different numbers. Examples:  
Input: a[] = {1, 2, 3, 2, 3} Output: 4 The difference between 1 and last 3.Input: a[] = {1, 1, 3, 1, 1, 1} Output: 3 The difference between the index of 3 and last 1.  
 
Approach: Initially, check the first number which is different from a[0] starting from the end, store the difference of their index as ind1. Also, check for the first number which is different from a[n – 1] from the beginning, store the difference of their index as ind2. The answer will be max(ind1, ind2). Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function to return the maximum differenceint findMaximumDiff(int a[], int n){    int ind1 = 0;     // Iteratively check from back    for (int i = n - 1; i > 0; i--) {         // Different numbers        if (a[0] != a[i]) {            ind1 = i;            break;        }    }     int ind2 = 0;     // Iteratively check from    // the beginning    for (int i = 0; i < n - 1; i++) {         // Different numbers        if (a[n - 1] != a[i]) {            ind2 = (n - 1 - i);            break;        }    }     return max(ind1, ind2);} // Driver codeint main(){    int a[] = { 1, 2, 3, 2, 3 };    int n = sizeof(a) / sizeof(a[0]);    cout << findMaximumDiff(a, n);     return 0;}
// Java implementation of the approachclass GFG{     // Function to return the maximum differencestatic int findMaximumDiff(int []a, int n){    int ind1 = 0;     // Iteratively check from back    for (int i = n - 1; i > 0; i--)    {         // Different numbers        if (a[0] != a[i])        {            ind1 = i;            break;        }    }     int ind2 = 0;     // Iteratively check from    // the beginning    for (int i = 0; i < n - 1; i++)    {         // Different numbers        if (a[n - 1] != a[i])        {            ind2 = (n - 1 - i);            break;        }    }     return Math.max(ind1, ind2);} // Driver codepublic static void main(String args[]){    int []a = { 1, 2, 3, 2, 3 };    int n = a.length;    System.out.println(findMaximumDiff(a, n));}} // This code is contributed by Akanksha_Rai
# Python3 implementation of the approach # Function to return the maximum differencedef findMaximumDiff(a, n):    ind1 = 0     # Iteratively check from back    for i in range(n - 1, -1, -1):         # Different numbers        if (a[0] != a[i]):            ind1 = i            break     ind2 = 0     # Iteratively check from    # the beginning    for i in range(n - 1):         # Different numbers        if (a[n - 1] != a[i]):            ind2 = (n - 1 - i)            break     return max(ind1, ind2) # Driver codea = [1, 2, 3, 2, 3]n = len(a)print(findMaximumDiff(a, n)) # This code is contributed by mohit kumar
// C# implementation of the approachusing System; class GFG{     // Function to return the maximum differencestatic int findMaximumDiff(int []a, int n){    int ind1 = 0;     // Iteratively check from back    for (int i = n - 1; i > 0; i--)    {         // Different numbers        if (a[0] != a[i])        {            ind1 = i;            break;        }    }     int ind2 = 0;     // Iteratively check from    // the beginning    for (int i = 0; i < n - 1; i++)    {         // Different numbers        if (a[n - 1] != a[i])        {            ind2 = (n - 1 - i);            break;        }    }     return Math.Max(ind1, ind2);} // Driver codestatic void Main(){    int []a = { 1, 2, 3, 2, 3 };    int n = a.Length;    Console.WriteLine(findMaximumDiff(a, n));}} // This code is contributed by mits
<?php// PHP implementation of the approach // Function to return the maximum differencefunction findMaximumDiff($a, $n){    $ind1 = 0;     // Iteratively check from back    for ($i = $n - 1; $i > 0; $i--)    {         // Different numbers        if ($a[0] != $a[$i])        {            $ind1 = $i;            break;        }    }     $ind2 = 0;     // Iteratively check from    // the beginning    for ($i = 0; $i < $n - 1; $i++)    {         // Different numbers        if ($a[$n - 1] != $a[$i])        {            $ind2 = ($n - 1 - $i);            break;        }    }     return max($ind1, $ind2);} // Driver code$a = array( 1, 2, 3, 2, 3 );$n = count($a); echo findMaximumDiff($a, $n); // This code is contributed by Ryuga?>
<script>// javascript implementation of the approach   // Function to return the maximum difference    function findMaximumDiff(a , n) {        var ind1 = 0;         // Iteratively check from back        for (i = n - 1; i > 0; i--) {             // Different numbers            if (a[0] != a[i]) {                ind1 = i;                break;            }        }         var ind2 = 0;         // Iteratively check from        // the beginning        for (i = 0; i < n - 1; i++) {             // Different numbers            if (a[n - 1] != a[i]) {                ind2 = (n - 1 - i);                break;            }        }         return Math.max(ind1, ind2);    }     // Driver code             var a = [ 1, 2, 3, 2, 3 ];        var n = a.length;        document.write(findMaximumDiff(a, n)); // This code is contributed by todaysgaurav</script>
4
 
Time Complexity: O(n)Auxiliary Space: O(1)
mohit kumar 29
ankthon
Mithun Kumar
Akanksha_Rai
todaysgaurav
rishavnitro
Arrays
Competitive Programming
Mathematical
Arrays
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Multidimensional Arrays in Java
Introduction to Arrays
Given an array A[] and a number x, check for pair in A[] with sum as x (aka Two Sum)
K'th Smallest/Largest Element in Unsorted Array | Set 1
Subset Sum Problem | DP-25
Competitive Programming - A Complete Guide
Practice for cracking any coding interview
Arrow operator -> in C/C++ with Examples
Modulo 10^9+7 (1000000007)
Prefix Sum Array - Implementation and Applications in Competitive Programming