# Search an element in an array where difference between adjacent elements is 1

Given an array where difference between adjacent elements is 1, write an algorithm to search for an element in the array and return the position of the element (return the first occurrence).

Examples :

```Let element to be searched be x

Input: arr[] = {8, 7, 6, 7, 6, 5, 4, 3, 2, 3, 4, 3}
x = 3
Output: Element 3 found at index 7

Input: arr[] =  {1, 2, 3, 4, 5, 4}
x = 5
Output: Element 5 found at index 4
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A Simple Approach is to traverse the given array one by one and compare every element with given element ‘x’. If matches, then return index.

The above solution can be Optimized using the fact that difference between all adjacent elements is 1. The idea is to start comparing from the leftmost element and find the difference between current array element and x. Let this difference be ‘diff’. From the given property of array, we always know that x must be at-least ‘diff’ away, so instead of searching one by one, we jump ‘diff’.

Thanks to RajnishKrJha for suggesting this solution.

Below is the implementation of above idea.

## C++

 `// C++ program to search an element in an array where ` `// difference between all elements is 1 ` `#include ` `using` `namespace` `std; ` ` `  `// x is the element to be searched in arr[0..n-1] ` `int` `search(``int` `arr[], ``int` `n, ``int` `x) ` `{ ` `    ``// Traverse the given array starting from ` `    ``// leftmost element ` `    ``int` `i = 0; ` `    ``while` `(i

## Java

 `// Java program to search an element in an ` `// array where difference between all  ` `// elements is 1 ` ` `  `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``// x is the element to be searched  ` `    ``// in arr[0..n-1] ` `    ``static` `int` `search(``int` `arr[], ``int` `n, ``int` `x) ` `    ``{ ` `         `  `        ``// Traverse the given array starting  ` `        ``// from leftmost element ` `        ``int` `i = ``0``; ` `        ``while` `(i < n) ` `        ``{ ` `             `  `            ``// If x is found at index i ` `            ``if` `(arr[i] == x) ` `                ``return` `i; ` `     `  `            ``// Jump the difference between current ` `            ``// array element and x ` `            ``i = i + Math.abs(arr[i]-x); ` `        ``} ` `     `  `        ``System.out.println (``"number is not"` `+ ` `                                     ``" present!"``); ` ` `  `        ``return` `-``1``; ` `    ``} ` ` `  `    ``// Driver program to test above function ` `    ``public` `static` `void` `main (String[] args) { ` `         `  `        ``int` `arr[] = {``8` `,``7``, ``6``, ``7``, ``6``, ``5``, ``4``, ``3``,  ` `                                   ``2``, ``3``, ``4``, ``3` `}; ` `        ``int` `n = arr.length; ` `        ``int` `x = ``3``; ` `        ``System.out.println(``"Element "` `+ x +  ` `                        ``" is present at index "` `                            ``+ search(arr,n,``3``)); ` `    ``} ` `} ` ` `  `//This code is contributed by vt_m. `

## Python 3

 `# Python 3 program to search an element  ` `# in an array where difference between ` `# all elements is 1 ` ` `  `# x is the element to be searched in  ` `# arr[0..n-1] ` `def` `search(arr, n, x): ` ` `  `    ``# Traverse the given array starting ` `    ``# from leftmost element ` `    ``i ``=` `0` `    ``while` `(i < n): ` `     `  `        ``# If x is found at index i ` `        ``if` `(arr[i] ``=``=` `x): ` `            ``return` `i ` ` `  `        ``# Jump the difference between ` `        ``# current array element and x ` `        ``i ``=` `i ``+` `abs``(arr[i] ``-` `x) ` `     `  `    ``print``(``"number is not present!"``) ` `    ``return` `-``1` ` `  `# Driver program to test above function ` `arr ``=` `[``8` `,``7``, ``6``, ``7``, ``6``, ``5``, ``4``, ``3``, ``2``, ``3``, ``4``, ``3` `] ` `n ``=` `len``(arr) ` `x ``=` `3` `print``(``"Element"` `, x , ``" is present at index "``, ` `                             ``search(arr,n,``3``)) ` `                              `  `# This code is contributed by Smitha `

## C#

 `// C# program to search an element  ` `// in an array where difference ` `// between all elements is 1  ` `using` `System; ` ` `  `public` `class` `GFG  ` `{ ` `     `  `    ``// in arr[0..n-1] ` `    ``static` `int` `search(``int` `[]arr, ``int` `n, ` `                      ``int` `x) ` `    ``{ ` `         `  `        ``// Traverse the given array starting  ` `        ``// from leftmost element ` `        ``int` `i = 0; ` `        ``while` `(i < n) ` `        ``{ ` `             `  `            ``// If x is found at index i ` `            ``if` `(arr[i] == x) ` `                ``return` `i; ` `     `  `            ``// Jump the difference between  ` `            ``// current array element and x ` `            ``i = i + Math.Abs(arr[i] - x); ` `        ``} ` `     `  `        ``Console.WriteLine (``"number is not"` `+ ` `                           ``" present!"``); ` ` `  `        ``return` `-1; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main()  ` `    ``{ ` `         `  `        ``int` `[]arr = {8 ,7, 6, 7, 6, 5, ` `                     ``4,3, 2, 3, 4, 3 }; ` `        ``int` `n = arr.Length; ` `        ``int` `x = 3; ` `        ``Console.WriteLine(``"Element "` `+ x +  ` `                        ``" is present at index "` `                        ``+ search(arr, n, 3)); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 ` `

Output :

`Element 3 is present at index 7`

Searching in an array where adjacent differ by at most k

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

6

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