A commonly asked puzzle at Java interviews is – find the missing number from a series or array of numbers. This puzzle has been asked in Amazon.com.

In this Java puzzle, you have a series of numbers start (e.g. 1….N) and exactly one number in this series is missing. You have to write a **java program to find missing number from series**.

## Solution to find mising number

Surprisingly, solution of this puzzle is very simple only if you know it already.

- Calculate
`A = n (n+1)/2`

where n is largest number in series 1…N. - Calculate B = Sum of all numbers in given series
- Missing number = A – B

Let’s a write the solution in code.

public class FindMissingNumber { public static void main(String[] args) { //10 is missing int[] numbers = {1,2,3,4,5,6,7,8,9, 11,12}; int N = 12; int idealSum = (N * (N + 1)) / 2; int sum = calculateSum(numbers); int missingNumber = idealSum - sum; System.out.println(missingNumber); } private static int calculateSum(int[] numbers) { int sum = 0; for (int n : numbers) { sum += n; } return sum; } } Output: 10

## Solution to find mising number – Java 8

Above code, though simple, can be reduced by many lines using new language features such as lambda in Java 8. Let’s see how?

import java.util.Arrays; public class FindMissingNumber { public static void main(String[] args) { //10 is missing int[] numbers = {1,2,3,4,5,6,7,8,9, 11,12}; int N = 12; int idealSum = (N * (N + 1)) / 2; int sum = Arrays.stream(numbers).sum(); int missingNumber = idealSum - sum; System.out.println(missingNumber); } } Output: 10

Puzzles like these are simple to solve, but it is always useful to know the solution before it is asked in any interview. So be ready to find missing number in array, in your next interview.

Happy Learning !!

Reference: SO Thread

apachecn

it’s better to replace add with xor, never overflow

Santhosh

how to find multiple numbers missing in a sequence using java 8 streams?

Subelal

why he is taken N=12 only

Lokesh Gupta

It is the largest number in series.

Random

How is it coded if there are more numbers like 1 to 200?