Given an array arr[] of size N, the task is to find the maximum index i such that arr[i] is equal to i. If there is no such index in the array arr[] then print -1.
Examples:
Input: arr[ ] = {-10, -5, 0, 3, 7}
Output: 3
Explanation: Only for i=3, arr[3] = 3
Input: arr[ ] = {0, 2, 5, 8, 4}
Output: 4
Approach: Follow the steps below to solve this problem:
- Iterate in the range [N-1, 0] using the variable i:
- If the current element is equal to i, then print i and return.
- If there is no such index, then print -1.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void findLargestIndex( int arr[], int n)
{
for ( int i = n - 1; i >= 0; i--) {
if (arr[i] == i) {
cout << i << endl;
return ;
}
}
cout << -1 << endl;
}
int main()
{
int arr[] = { -10, -5, 0, 3, 7 };
int n = sizeof (arr) / sizeof (arr[0]);
findLargestIndex(arr, n);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static void findLargestIndex( int arr[], int n)
{
for ( int i = n - 1 ; i >= 0 ; i--) {
if (arr[i] == i) {
System.out.println(i);
return ;
}
}
System.out.println(- 1 );
}
public static void main(String[] args)
{
int arr[] = { - 10 , - 5 , 0 , 3 , 7 };
int n = arr.length;
findLargestIndex(arr, n);
}
}
|
Python
def findLargestIndex(arr, n):
for i in range (n):
if (arr[i] = = i) :
print ( i )
return
print ( - 1 )
arr = [ - 10 , - 5 , 0 , 3 , 7 ]
n = len (arr)
findLargestIndex(arr, n)
|
C#
using System;
class GFG
{
static void findLargestIndex( int []arr, int n)
{
for ( int i = n - 1; i >= 0; i--) {
if (arr[i] == i) {
Console.Write(i);
return ;
}
}
Console.Write(-1);
}
public static void Main(String[] args)
{
int []arr = { -10, -5, 0, 3, 7 };
int n = arr.Length;
findLargestIndex(arr, n);
}
}
|
Javascript
<script>
function findLargestIndex( arr, n)
{
for ( var i = n - 1; i >= 0; i--) {
if (arr[i] == i) {
document.write(i);
return ;
}
}
document.write(-1);
}
var arr = [ -10, -5, 0, 3, 7 ];
var n = arr.length;
findLargestIndex(arr, n);
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1)