Skip to content

Algorithm to figure out what the number missing in the array or List or numbers.

pradeeppadmarajaiah edited this page Mar 2, 2016 · 1 revision

For
Example 1 : Array has numbers 0,1,3. Missing number is 2
Example 2 : Array has numbers 0,1,2,3. Missing number is 4
Example 3 : Array has numbers 1,2,3. Missing number is 0

package com.bitiknow.algo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**

  • @author pradeep
  • *Answer : SumOfAllNumbers-SumOfPresentNumbers=Missing Number;
  • To GET SumOfAllNumbers : Get the highest number (N) by checking the
  • length. and use the formula (N*(N+1))/2
  • *To GET SumOfPresentNumbers: iterate and add it
  • */
    public class FindMissingNumber {

/**
* Before Java 8
*
* @param numbers
* @return
*/
public static int missingNumber(List numbers) {
int sumOfPresentNumbers = 0;
for (Integer integer : numbers) {
sumOfPresentNumbers = sumOfPresentNumbers + integer;
}
int n = numbers.size();
int sumOfAllNumbers = (n * (n + 1)) / 2;
return sumOfAllNumbers – sumOfPresentNumbers;
}

/**
* Using Java 8 . mapToInt & sum using streams.
*
* @param numbers
* @return
*/
public static int missingNumberJava8(List numbers) {
int sumOfPresentNumbers = numbers.stream().mapToInt(i → i).sum();
int n = numbers.size();
int sumOfAllNumbers = (n * (n + 1)) / 2;
return sumOfAllNumbers – sumOfPresentNumbers;
}

public static void main(String[] args) {
List list = new ArrayList<>();
list = Arrays.asList(0, 1, 2, 4);
System.out.println("Missing number is : " + missingNumber(list));

System.out.println("Missing number using Java 8 is : " + missingNumberJava8(list));
}

}

Clone this wiki locally