The logic is very simple here, see the below.
- At first we need to find the MAX number from the list. We need this MAX number because , we need to calculate the SUM of all natural number up to that max number.
- Then , we need to calculate the sum of all those natural number.
- Then we will subtract each element from the given list from sumOfNaturalNumbers.
- Now, the at the last the value inside sumOfNaturalNumbers is the missing number.
FindOneMissingNumber.java
package com.techbyteslearn.lab.basic; import java.util.ArrayList; import java.util.Arrays; public class FindOneMissingNumber { public static void main(String[] args) { ArrayList<Integer> numberList = new ArrayList<>( Arrays.asList(10, 3, 2, 4, 5, 6, 7, 9, 8, 14, 1, 11, 13)); int sumOfNaturalNumbers = getSumUptoMax(findMax(numberList)); for (int i = 0; i < numberList.size(); i++) { /* * Subtract each element from the list from sumOfNaturalNumbers. * The final value will be the missing number. */ sumOfNaturalNumbers = sumOfNaturalNumbers - numberList.get(i); } int missingNumber = sumOfNaturalNumbers; System.out.println("Missing Number is :: " + missingNumber); } // Find the sum of all natural numbers up to limitNumber. private static int getSumUptoMax(int limitNumber) { int sum = 0; for (int i = 1; i <= limitNumber; i++) { sum = sum + i; } return sum; } // Find the greatest value from the list. private static int findMax(ArrayList<Integer> numberList) { int largest = numberList.get(0); for (int i = 1; i < numberList.size(); i++) { if (numberList.get(i) > largest) { largest = numberList.get(i); } } return largest; } }Output:
Missing Number is :: 12
This approach assumes the list contains the numbers from 1 through the maximum value, with exactly one number missing.
Happy Learning.
No comments:
Post a Comment