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

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++
Java
Python3
C#
PHP
Javascript
// 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 indexvoid 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 Codeint 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 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 code to find starting and ending# indexes of repeated numbers in an array # Function to find starting and end indexdef 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 Codea = [1, 2, 7, 8, 8, 9, 8, 0, 0, 0, 8]n = len(a) # Key to findkey = 8 # Calling functionfindIndex(a, n, key) # This code is contributed by "Sharad_Bhardwaj".
// C# program to find starting and ending// indexes of repeated numbers in an arrayusing 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 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 functionecho findIndex($a, $key);?>
<script> // Javascript program to find starting and ending// indexes of repeated numbers in an array // Function to find starting and end indexfunction 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 arrayThis 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 review-team@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. 
parashar
nitin mittal
DheerajKukreja
mayanktyagi1709
Arrays
School Programming
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Chocolate Distribution Problem
Window Sliding Technique
Reversal algorithm for array rotation
Next Greater Element
Find duplicates in O(n) time and O(1) extra space | Set 1
Python Dictionary
Inheritance in C++
Reverse a string in Java
C++ Classes and Objects
Interfaces in Java