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



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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
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[0]);
    int pos = 4;
  
    cout << minIndex(arr, n, pos);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the approach 
  
// Function to return the minimum 
// required index 
function minIndex($arr, $n, $pos
    $num = $arr[$pos]; 
  
    // Start from arr[pos - 1] 
    $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 
$arr = array(2, 1, 1, 1, 5, 2 ); 
$n = sizeof($arr); 
$pos = 4; 
  
echo minIndex($arr, $n, $pos); 
  
// This code is contributed by Ryuga
?>

chevron_right


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.