# Minimum index i such that all the elements from index i to given index are equal

Given an array arr[] of integers and an integer pos, the task is to find the minimum index i such that all the elements from index i to index pos are equal.

Examples:

Input: arr[] = {2, 1, 1, 1, 5, 2}, pos = 3
Output: 1
Elements in index range [1, 3] are all equal to 1.

Input: arr[] = {2, 1, 1, 1, 5, 2}, pos = 5
Output: 5

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Starting from index pos – 1, traverse the array in reverse and for the first index i such that arr[i] != arr[pos] print i + 1 which is the required index.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the minimum required index ` `int` `minIndex(``int` `arr[], ``int` `n, ``int` `pos) ` `{ ` `    ``int` `num = arr[pos]; ` ` `  `    ``// Start from arr[pos - 1] ` `    ``int` `i = pos - 1; ` `    ``while` `(i >= 0) { ` `        ``if` `(arr[i] != num) ` `            ``break``; ` `        ``i--; ` `    ``} ` ` `  `    ``// All elements are equal ` `    ``// from arr[i + 1] to arr[pos] ` `    ``return` `i + 1; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 2, 1, 1, 1, 5, 2 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``int` `pos = 4; ` ` `  `    ``cout << minIndex(arr, n, pos); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` `     `  `// Function to return the minimum required index ` `static` `int` `minIndex(``int` `arr[], ``int` `n, ``int` `pos) ` `{ ` `    ``int` `num = arr[pos]; ` ` `  `    ``// Start from arr[pos - 1] ` `    ``int` `i = pos - ``1``; ` `    ``while` `(i >= ``0``)  ` `    ``{ ` `        ``if` `(arr[i] != num) ` `            ``break``; ` `        ``i--; ` `    ``} ` ` `  `    ``// All elements are equal ` `    ``// from arr[i + 1] to arr[pos] ` `    ``return` `i + ``1``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `arr[] = { ``2``, ``1``, ``1``, ``1``, ``5``, ``2` `}; ` `    ``int` `n = arr.length; ` `    ``int` `pos = ``4``; ` ` `  `    ``System.out.println(minIndex(arr, n, pos)); ` `} ` `} ` ` `  `// This code is contributed by Code_Mech. `

## Python3

 `# Python3 implementation of the approach ` ` `  `# Function to return the minimum ` `# required index ` `def` `minIndex(arr, n, pos): ` ` `  `    ``num ``=` `arr[pos] ` ` `  `    ``# Start from arr[pos - 1] ` `    ``i ``=` `pos ``-` `1` `    ``while` `(i >``=` `0``): ` `        ``if` `(arr[i] !``=` `num): ` `            ``break` `        ``i ``-``=` `1` `     `  `    ``# All elements are equal ` `    ``# from arr[i + 1] to arr[pos] ` `    ``return` `i ``+` `1` ` `  `# Driver code ` `arr ``=` `[``2``, ``1``, ``1``, ``1``, ``5``, ``2` `] ` `n ``=` `len``(arr) ` `pos ``=` `4` ` `  `print``(minIndex(arr, n, pos)) ` ` `  `# This code is contributed by  ` `# Mohit Kumar 29 `

## C#

 `// C# implementation of the approach ` `using` `System; ` `class` `GFG ` `{ ` `     `  `// Function to return the minimum required index ` `static` `int` `minIndex(``int` `[]arr, ``int` `n, ``int` `pos) ` `{ ` `    ``int` `num = arr[pos]; ` ` `  `    ``// Start from arr[pos - 1] ` `    ``int` `i = pos - 1; ` `    ``while` `(i >= 0)  ` `    ``{ ` `        ``if` `(arr[i] != num) ` `            ``break``; ` `        ``i--; ` `    ``} ` ` `  `    ``// All elements are equal ` `    ``// from arr[i + 1] to arr[pos] ` `    ``return` `i + 1; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main() ` `{ ` `    ``int` `[]arr = { 2, 1, 1, 1, 5, 2 }; ` `    ``int` `n = arr.Length; ` `    ``int` `pos = 4; ` ` `  `    ``Console.WriteLine(minIndex(arr, n, pos)); ` `} ` `} ` ` `  `// This code is contributed  ` `// by Akanksha Rai `

## PHP

 `= 0)  ` `    ``{  ` `        ``if` `(``\$arr``[``\$i``] != ``\$num``)  ` `            ``break``;  ` `        ``\$i``--;  ` `    ``}  ` ` `  `    ``// All elements are equal  ` `    ``// from arr[i + 1] to arr[pos]  ` `    ``return` `\$i` `+ 1;  ` `}  ` ` `  `// Driver code  ` `\$arr` `= ``array``(2, 1, 1, 1, 5, 2 );  ` `\$n` `= sizeof(``\$arr``);  ` `\$pos` `= 4;  ` ` `  `echo` `minIndex(``\$arr``, ``\$n``, ``\$pos``);  ` ` `  `// This code is contributed by Ryuga ` `?> `

Output:

```4
``` My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.