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
