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

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 in 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.

Happy Learning !!

Reference: SO Thread

## Ask Questions & Share Feedback