Skip to content
Related Articles

Related Articles

Improve Article

Find start and ending index of an element in an unsorted array

  • Difficulty Level : Easy
  • Last Updated : 10 May, 2021

Given an array of integers, task is to find the starting and ending position of a given key. 

Examples:  

Input : arr[] = {1, 2, 3, 4, 5, 5}
      Key = 5
Output :  Start index: 4
      Last index: 5
Explanation: Starting index where 5
is present is 4 and ending address is 5.
 
Input :arr[] = {1, 3, 7, 8, 6}, 
      Key = 2
Output : Key not present in array

Input :arr[] = {1, 8, 7, 8, 6}, 
      Key = 7
Output : Only one occurrence of 
key is present at index 2

We traverse array from beginning to find first occurrence. If element is present, then we traverse from end also to find last occurrence. 
 

C++




// CPP program to find starting and ending
// indexes of repeated numbers in an array
#include <iostream>
using namespace std;
 
// Function to find starting and end index
void findIndex(int a[], int n, int key)
{
    int start = -1;
 
    // Traverse from beginning to find
    // first occurrence
    for (int i = 0; i < n; i++) {
        if (a[i] == key) {
            start = i;
            break;
        }
    }
 
    if (start == -1) {
        cout << "Key not present in array";
        return;
    }
 
    // Traverse from end to find last
    // occurrence.
    int end = start;
    for (int i = n - 1; i >= start; i--) {
        if (a[i] == key) {
            end = i;
            break;
        }
    }
    if (start == end)
        cout << "Only one key is present at index : "
             << start;
    else {
        cout << "Start index: " << start;
        cout << "nLast index: " << end;
    }
}
 
// Driver Code
int main()
{
    int a[] = { 1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8 };
    int n = sizeof(a) / sizeof(a[0]);
 
    // Key to find
    int key = 8;
 
    // Calling function
    findIndex(a, n, key);
 
    return 0;
}

Java




// Java program to find starting and ending
// indexes of repeated numbers in an array
 
class Test {
    // Function to find starting and end index
    static void findIndex(int a[], int n, int key)
    {
        int start = -1;
 
        // Traverse from beginning to find
        // first occurrence
        for (int i = 0; i < n; i++) {
            if (a[i] == key) {
                start = i;
                break;
            }
        }
 
        if (start == -1) {
            System.out.println("Key not present in array");
            return;
        }
 
        // Traverse from end to find last
        // occurrence.
        int end = start;
        for (int i = n - 1; i >= start; i--) {
            if (a[i] == key) {
                end = i;
                break;
            }
        }
        if (start == end)
            System.out.println("Only one key is present at index : " + start);
        else {
            System.out.println("Start index: " + start);
            System.out.println("Last index: " + end);
        }
    }
 
    // Driver method
    public static void main(String args[])
    {
        int a[] = { 1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8 };
 
        // Key to find
        int key = 8;
 
        // Calling method
        findIndex(a, a.length, key);
    }
}

Python3




# Python3 code to find starting and ending
# indexes of repeated numbers in an array
 
# Function to find starting and end index
def findIndex (a, n, key ):
    start = -1
     
    # Traverse from beginning to find
    # first occurrence
    for i in range(n):
        if a[i] == key:
            start = i
            break
 
    if start == -1:
        print("Key not present in array")
        return 0
     
    # Traverse from end to find last
    # occurrence.
    end = start
    for i in range(n-1, start - 1, -1):
        if a[i] == key:
            end = i
            break
    if start == end:
        print("Only one key is present at index : ", start)
    else:
        print("Start index: ", start)
        print("Last index: ", end)
 
# Driver Code
a = [1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8]
n = len(a)
 
# Key to find
key = 8
 
# Calling function
findIndex(a, n, key)
 
# This code is contributed by "Sharad_Bhardwaj".

C#




// C# program to find starting and ending
// indexes of repeated numbers in an array
using System;
 
class GFG {
 
    // Function to find starting and
    // end index
    static void findIndex(int[] a, int n,
                          int key)
    {
        int start = -1;
 
        // Traverse from beginning to
        // find first occurrence
        for (int i = 0; i < n; i++) {
            if (a[i] == key) {
                start = i;
                break;
            }
        }
 
        if (start == -1) {
            Console.WriteLine("Key not "
                              + "present in array");
            return;
        }
 
        // Traverse from end to find last
        // occurrence.
        int end = start;
        for (int i = n - 1; i >= start; i--) {
            if (a[i] == key) {
                end = i;
                break;
            }
        }
        if (start == end)
            Console.WriteLine("Only one key is"
                              + " present at index : "
                              + start);
        else {
            Console.WriteLine("Start index: "
                              + start);
 
            Console.WriteLine("Last index: "
                              + end);
        }
    }
 
    // Driver method
    public static void Main()
    {
        int[] a = { 1, 2, 7, 8, 8, 9,
                    8, 0, 0, 0, 8 };
 
        // Key to find
        int key = 8;
 
        // Calling method
        findIndex(a, a.Length, key);
    }
}
 
// This code is contributed by parashar.

PHP




<?php
// PHP program to find starting and ending
// indexes of repeated numbers in an array
 
// Function to find starting and end index
 
function findIndex($arr, $find){
 
    // To store the atrting and
    // the ending index of the key
    $start = -1;
    $end = -1;
     
    // For every element of the given array
    foreach ($arr as $key => $value) {
         
        // If current element is equal
        // to the given key
        if($find === $value){
             
            // If starting index hasn't been set
            if($start==-1)
                $start = $key;
            $end = $key;
        }
    }
 
    // If key is not present in the array
    if($start==-1){
        return "Key not present in array";
    }
    if($end == $start){
        return "Only one key is present "." at index : ". $start;
    }
    return "Start index: ".$start. "\nLast index: ".$end;
}
 
// Driver code
$a = array(1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8);
 
// Key to find
$key = 8;
 
// Calling function
echo findIndex($a, $key);
?>

Javascript




<script>
 
// Javascript program to find starting and ending
// indexes of repeated numbers in an array
 
// Function to find starting and end index
function findIndex(a, n, key)
{
    let start = -1;
 
    // Traverse from beginning to find
    // first occurrence
    for (let i = 0; i < n; i++) {
        if (a[i] == key) {
            start = i;
            break;
        }
    }
 
    if (start == -1) {
        document.write("Key not present in array");
        return;
    }
 
    // Traverse from end to find last
    // occurrence.
    let end = start;
    for (let i = n - 1; i >= start; i--) {
        if (a[i] == key) {
            end = i;
            break;
        }
    }
    if (start == end)
        document.write("Only one key is present at index : "
            + start);
    else {
        document.write("Start index: " + start);
        document.write("<br>" + "Last index: " + end);
    }
}
 
// Driver Code
 
    let a = [ 1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8 ];
    let n = a.length;
 
    // Key to find
    let key = 8;
 
    // Calling function
    findIndex(a, n, key);
 
//This code is contributed by Mayank Tyagi
</script>

Output:  

Start index: 3
Last index: 10

Related Article: 
Find first and last occurrences of an element in a sorted array
This article is contributed by Sahil Rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :