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

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

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

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 ` `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); ` ` `  `    ``// 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

 ` ``\$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``); ` `?> `

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 contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.