Count of Missing Numbers in a sorted array

Given a sorted array arr[], the task is to calculate the number of missing numbers between the first and last element of the sorted array.

Examples:

Input: arr[] = { 1, 4, 5, 8 }
Output: 4
Explanation:
The missing integers in the array are {2, 3, 6, 7}.
Therefore, the count is 4.

Input: arr[] = {5, 10, 20, 40}
Output: 32

Naive Approach:
The simplest approach to solve the problem is to iterate through the array and calculate the sum of all the adjacent differences of the elements of the array.



Time Complexity: O(N)
Auxiliary Space: O(1)

Efficient Approach:
To optimize the above approach, the idea is to observe that the total count of numbers in the range of [arr[0], arr[N – 1]] is given by arr[N-1] – arr[0] + 1. Since the size of the array is N, the count of missing integers in the array is given by arr[N-1] – arr[0] + 1 – N.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ Program for the above approach 
#include <bits/stdc++.h> 
using namespace std; 
  
// Function that find the count of 
// missing numbers in array a[] 
void countMissingNum(int a[], int N) 
    // Calculate the count of missing 
    // numbers in the array 
    int count = a[N - 1] - a[0] + 1 - N; 
  
    cout << count << endl; 
  
// Driver Code 
int main() 
    int arr[] = { 5, 10, 20, 40 }; 
  
    int N = sizeof(arr) / sizeof(arr[0]); 
  
    countMissingNum(arr, N); 
  
    return 0; 
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for the above approach 
class GFG{ 
      
// Function that find the count of 
// missing numbers in array a[] 
public static void countMissingNum(int[] a, 
                                int N) 
      
    // Calculate the count of missing 
    // numbers in the array 
    int count = a[N - 1] - a[0] + 1 - N; 
  
    System.out.println(count); 
  
// Driver code 
public static void main(String[] args) 
    int arr[] = { 5, 10, 20, 40 }; 
  
    int N = arr.length; 
  
    countMissingNum(arr, N); 
  
// This code is contributed by divyeshrabadiya07 

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for the above approach
  
# Function that find the count of 
# missing numbers in array a[] 
def countMissingNum(a, N): 
      
    # Calculate the count of missing 
    # numbers in the array 
    count = a[N - 1] - a[0] + 1 -
  
    print(count) 
  
# Driver Code 
arr = [ 5, 10, 20, 40
  
N = len(arr) 
  
countMissingNum(arr, N) 
  
# This code is contributed by sanjoy_62

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for the above approach 
using System;
  
class GFG{
      
// Function that find the count of 
// missing numbers in array a[] 
public static void countMissingNum(int[] a,
                                   int N) 
      
    // Calculate the count of missing 
    // numbers in the array 
    int count = a[N - 1] - a[0] + 1 - N; 
  
    Console.Write(count); 
  
// Driver code
public static void Main(string[] args)
{
    int []arr = { 5, 10, 20, 40 }; 
    int N = arr.Length; 
  
    countMissingNum(arr, N); 
}
}
  
// This code is contributed by rutvik_56

chevron_right


Output:

32

Time Complexity: O(1)
Auxiliary Space: O(1)

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


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.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.