Lost number in number sequence in Java

The challenge

An ordered sequence of numbers from 1 to N is given. One number might have deleted from it, then the remaining numbers were mixed. Find the number that was deleted.

Example:

  • The starting array sequence is [1,2,3,4,5,6,7,8,9]
  • The mixed array with one deleted number is [3,2,4,6,7,8,1,9]
  • Your function should return the int 5.

If no number was deleted from the array and no difference with it, your function should return the int 0.

Note that N may be 1 or less (in the latter case, the first array will be []).

The solution in Java code

Option 1:

import java.util.stream.IntStream; public class Solution { public static int findDeletedNumber(int[] arr, int[] mixedArr) { return IntStream.of(arr).sum() - IntStream.of(mixedArr).sum(); } }
Code language: Java (java)

Option 2:

import java.util.Arrays; public class Solution { public static int findDeletedNumber(int[] arr, int[] mixedArr) { return Arrays.stream(arr) .filter(arrElement -> Arrays.stream(mixedArr).noneMatch(mixedElement -> arrElement == mixedElement)) .findFirst() .orElse(0); } }
Code language: Java (java)

Option 3:

import static java.util.stream.IntStream.of; class Solution { static int findDeletedNumber(int[] arr, int[] mixedArr) { return arr.length == mixedArr.length ? 0 : arr.length * (arr.length + 1) / 2 - of(mixedArr).sum(); } }
Code language: Java (java)

Test cases to validate our solution

import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void basicTests() { assertEquals(2, Solution.findDeletedNumber(new int[]{1,2,3,4,5}, new int[]{3,4,1,5})); assertEquals(5, Solution.findDeletedNumber(new int[]{1,2,3,4,5,6,7,8,9}, new int[]{1,9,7,4,6,2,3,8})); assertEquals(0, Solution.findDeletedNumber(new int[]{1,2,3,4,5,6,7,8,9}, new int[]{5,7,6,9,4,8,1,2,3})); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments