Find missing element in a sorted array of consecutive numbers in Python



Suppose we have an array A of n unique numbers, these n elements are present in the array in ascending order, but there is one missing element. We have to find the missing element.

So, if the input is like A = [1, 2, 3, 4, 5, 6, 7, 9], then the output will be 8.

To solve this, we will follow these steps −

  • n := size of A

  • left := 0

  • right := n - 1

  • mid := 0

  • while right > left , do

    • mid := left +(right - left) / 2

    • if A[mid] - mid is same as A[0], then

      • if A[mid + 1] - A[mid] > 1, then

        • return A[mid] + 1

      • otherwise,

        • left := mid + 1

    • otherwise,

      • if A[mid] - A[mid - 1] > 1, then

        • return A[mid] - 1

      • otherwise,

        • right := mid - 1

  • return -1

Example

Let us see the following implementation to get better understanding −

 Live Demo

def search_missing_item(A):    n = len(A)    left, right = 0, n - 1    mid = 0    while (right > left):       mid = left + (right - left) // 2    if (A[mid] - mid == A[0]):       if (A[mid + 1] - A[mid] > 1):          return A[mid] + 1       else:          left = mid + 1       else:          if (A[mid] - A[mid - 1] > 1):             return A[mid] - 1          else:             right = mid - 1    return -1 A = [1, 2, 3, 4, 5, 6, 7, 9] print(search_missing_item(A))

Input

[1, 2, 3, 4, 5, 6, 7, 9]

Output

8
Updated on: 2020-08-25T11:40:46+05:30

583 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements