</>

Technology

Java Programs

Difficulty

Intermediate

Interview Question

Write a Java program to find the missing number in an array of 1 to N.

Answer

Find Missing Number in Array (1 to N)

Java
public class FindMissingNumber {
    public static void main(String[] args) {
        // Array should contain 1 to 10, but 7 is missing
        int arr[] = { 1, 2, 3, 4, 5, 6, 8, 9, 10 };
        int n     = 10;  // numbers should be 1 to n

        // Expected sum of 1 to n = n*(n+1)/2
        int expectedSum = n * (n + 1) / 2;  // 55

        // Actual sum of array elements
        int actualSum = 0;
        for (int num : arr) actualSum += num;  // 48

        int missing = expectedSum - actualSum;

        System.out.println("Expected sum: " + expectedSum);  // 55
        System.out.println("Actual sum:   " + actualSum);    // 48
        System.out.println("Missing number: " + missing);    // 7
    }
}

Output

CODE
Expected sum: 55
Actual sum:   48
Missing number: 7

Why This Works

CODE
1+2+3+4+5+6+7+8+9+10 = 55  (expected)
1+2+3+4+5+6+  8+9+10 = 48  (actual — 7 is missing)
55 - 48 = 7  ← missing number

Using XOR (Handles Large Numbers — No Overflow)

Java
public static int findMissingXOR(int[] arr, int n) {
    int xorAll   = 0;
    int xorArray = 0;

    // XOR of all numbers 1 to n
    for (int i = 1; i <= n; i++) xorAll ^= i;

    // XOR of all array elements
    for (int num : arr) xorArray ^= num;

    // XOR cancels matching numbers, leaving the missing one
    return xorAll ^ xorArray;
}

int[] arr = { 1, 2, 3, 4, 5, 6, 8, 9, 10 };
System.out.println("Missing: " + findMissingXOR(arr, 10));  // 7

Stream Version

Java
int[] arr = { 1, 2, 3, 4, 5, 6, 8, 9, 10 };
int n = 10;

int expectedSum = n * (n + 1) / 2;
int actualSum   = java.util.Arrays.stream(arr).sum();

System.out.println("Missing: " + (expectedSum - actualSum));  // 7

Find Multiple Missing Numbers

Java
import java.util.*;

int[] arr = { 1, 2, 4, 6, 7, 9 };  // missing: 3, 5, 8
int n = 9;

Set<Integer> set = new HashSet<>();
for (int num : arr) set.add(num);

System.out.print("Missing numbers: ");
for (int i = 1; i <= n; i++) {
    if (!set.contains(i)) System.out.print(i + " ");
}
// → Missing numbers: 3 5 8

Follow AutomateQA