In this post, we will solve **Missing Numbers(FP) HackerRank Solution**. This problem **(Missing Numbers(FP))** is a part of **HackerRank Functional Programming** series.

**Task**

Sometimes you need to compare lists of number, but sorting each one normally will take too much time. Instead you can use alternative methods to find the differences between each list.

**Challenge**

Numeros The Artist was arranging two identical lists A and B into specific orders. The arrangements of the two arrays were random, Numeros was very proud of his arrangements. Unfortunately, some numbers got left out of List A. Can you find the missing numbers from A without messing up his order?

**Details**

There are many duplicates in the lists, but you need to find the extra numbers, i.e. B – A. Print the numbers in numerical order. Print each missing number once, even if it is missing multiple times. The numbers are all within a range of 100 from each other.

**Input Format**

There will be four lines of input:

n – the size of the first list

This is followed by *n* numbers that makes up the first list.

m – the size of the second list

This is followed by *m* numbers that makes up the second list.

**Output Format**

Output all the numbers (in ascending order) that are in B but not in A.

**Constraints**

- 1<= n,m <= 200000
- -10000 <= x <= 10000 , x ∈ B
- Xmax – Xmin < 101

**Sample Input**

```
10
203 204 205 206 207 208 203 204 205 206
13
203 204 204 205 206 207 205 208 203 206 205 206 204
```

**Sample Output**

`204 205 206`

**Explanation**

Although 204 presented in both arrays, but 204’s frequency in A is smaller than that of B. Similarly 205 and 206 occur twice in A but thrice in B. So, these three numbers constitute the output. The rest of the numbers occur at least as many times in A as they do in B – so they are not “missing numbers”.

**Solution – Missing Numbers(FP) – HackerRank Solution**

**Scala**

import java.util.Scanner object Solution { def main(args: Array[String]): Unit = { val sc = new Scanner(System.in) sc.nextLine val a = sc.nextLine.split(' ').map(_.toInt) sc.nextLine val b = sc.nextLine.split(' ').map(_.toInt) sc.close() val min = b.min val maxDiff = 100 val aValues = Array.ofDim[Int](maxDiff) a.foreach(v => aValues(v - min) += 1) case class Acc(res: List[Int] = Nil) println(b.foldLeft(Acc())((acc, v) => { val index = v - min aValues(index) -= 1 Acc(if (aValues(index) == -1) v :: acc.res else acc.res) }).res.sorted.mkString(" ")) } }

**Note:** This problem **(Missing Numbers(FP))** is generated by **HackerRank** but the solution is provided by **CodingBroz**. This tutorial is only for **Educational** and **Learning** purpose.