Here we are going to see the most frequently asked interview question, how to find a missing number in an array sorted/unsorted.

Example
Input: numbers={1,2,3,5,6}
Output: 4
numbers={1,3,2,5,6}
Output: 4

We can find a missing number in an array in different approaches, let’s see the easiest ways.

Find a missing number in an array (Sorted):

Here I am going to show the simplest way to find a missing number in a sorted array.

Approach:

  • Sort an Array using Arrays.sort(arr).
  • Since Array is sorted, we can compare the array indexes with the values.
  • If anyone of the array value not equal to array Index, then we can say that, that is a missed number.
  • Let’s see in practice.
MissingNumber.java
import java.util.Arrays;

public class MissingNumber {

    public static void main(String[] args) {
        int[] number = {6, 3, 2, 4, 1};
        Arrays.sort(number);
        System.out.println("Missing Number is:" + getMissingNumber(number));
    }

    private static Integer getMissingNumber(int[] number) {
        Integer missed = null;
        for (int i = 0; i < number.length; i++) {
            int index = i + 1;
            if (number[i] != index) {
                missed = index;
                break;
            }
        }
        return missed;
    }
}
Output
Missing Number is:5

Find a missing number in an array (Un-Sorted):

We can even find a missing number in an unsorted array in a simple approach using the formula n*(n+1)/2.

Approach:

  • Calculate the sum of number using (n+1) * (n+2)/2
  • Loop through all the elements from the array and subtract all the numbers form the sum.
  • Then you will get the missed number.
MissingNumber.java
public class MissingNumber {

    public static void main(String[] args) {
        int[] number = {6, 3, 2, 4, 1};
        System.out.println("Missing Number is:" + getMissingNumber(number));
    }
    public static int getMissingNumber(int arr[])
    {
        int i, total;
        int n = arr.length;
        total = (n + 1) * (n + 2) / 2;
        for (i = 0; i < n; i++)
            total -= arr[i];
        return total;
    }
}
Output
Missing Number is:5

Happy Learning 🙂