# Find first k natural numbers missing in given array

• Difficulty Level : Basic
• Last Updated : 15 Jul, 2022

Given an array of size n and a number k, we need to print first k natural numbers that are not there in the given array.

Examples:

```Input : [2 3 4]
k = 3
Output : [1 5 6]

Input  : [-2 -3 4]
k = 2
Output : [1 2]```
1. Sort the given array.
2. After sorting, we find the position of the first positive number in the array.
3. Now we traverse the array and keep printing elements in gaps between two consecutive array elements.
4. If gaps don’t cover k missing numbers, we print numbers greater than the largest array element.

Implementation:

## C++

 `// C++ program to find missing k numbers``// in an array.``#include ``using` `namespace` `std;` `// Prints first k natural numbers in``// arr[0..n-1]``void` `printKMissing(``int` `arr[], ``int` `n, ``int` `k)``{``    ``sort(arr, arr + n);` `    ``// Find first positive number``    ``int` `i = 0;``    ``while` `(i < n && arr[i] <= 0)``        ``i++;` `    ``// Now find missing numbers``    ``// between array elements``    ``int` `count = 0, curr = 1;``    ``while` `(count < k && i < n) {``        ``if` `(arr[i] != curr) {``            ``cout << curr << ``" "``;``            ``count++;``        ``}``        ``else``            ``i++;` `        ``curr++;``    ``}` `    ``// Find missing numbers after``    ``// maximum.``    ``while` `(count < k) {``        ``cout << curr << ``" "``;``        ``curr++;``        ``count++;``    ``}``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 2, 3, 4 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``int` `k = 3;``    ``printKMissing(arr, n, k);``    ``return` `0;``}`

## Java

 `// Java program to find missing k numbers``// in an array.``import` `java.util.Arrays;` `class` `GFG {``    ``// Prints first k natural numbers in``    ``// arr[0..n-1]``    ``static` `void` `printKMissing(``int``[] arr, ``int` `n, ``int` `k)``    ``{``        ``Arrays.sort(arr);` `        ``// Find first positive number``        ``int` `i = ``0``;``        ``while` `(i < n && arr[i] <= ``0``)``            ``i++;` `        ``// Now find missing numbers``        ``// between array elements``        ``int` `count = ``0``, curr = ``1``;``        ``while` `(count < k && i < n) {``            ``if` `(arr[i] != curr) {``                ``System.out.print(curr + ``" "``);``                ``count++;``            ``}``            ``else``                ``i++;``            ``curr++;``        ``}` `        ``// Find missing numbers after``        ``// maximum.``        ``while` `(count < k) {``            ``System.out.print(curr + ``" "``);``            ``curr++;``            ``count++;``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int``[] arr = { ``2``, ``3``, ``4` `};``        ``int` `n = arr.length;``        ``int` `k = ``3``;``        ``printKMissing(arr, n, k);``    ``}``}``/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python3 program to find missing``# k numbers in an array.` `# Prints first k natural numbers``# in arr[0..n-1]``def` `printKMissing(arr, n, k) :``    ` `    ``arr.sort()` `    ``# Find first positive number``    ``i ``=` `0``    ``while` `(i < n ``and` `arr[i] <``=` `0``) :``        ``i ``=` `i ``+` `1` `    ``# Now find missing numbers``    ``# between array elements``    ``count ``=` `0``    ``curr ``=` `1``    ``while` `(count < k ``and` `i < n) :``        ``if` `(arr[i] !``=` `curr) :``            ``print``(``str``(curr) ``+` `" "``, end ``=` `'')``            ``count ``=` `count ``+` `1``        ``else``:``            ``i ``=` `i ``+` `1``        ` `        ``curr ``=` `curr ``+` `1``        ` `    ``# Find missing numbers after``    ``# maximum.``    ``while` `(count < k) :``        ``print``(``str``(curr) ``+` `" "``, end ``=` `'')``        ``curr ``=` `curr ``+` `1``        ``count ``=` `count ``+` `1``        ` `# Driver code``arr ``=` `[ ``2``, ``3``, ``4` `]``n ``=` `len``(arr)``k ``=` `3``printKMissing(arr, n, k);` `# This code is contributed``# by Yatin Gupta`

## C#

 `// C# program to find missing``// k numbers in an array.``using` `System;` `class` `GFG {``    ``// Prints first k natural numbers``    ``// in arr[0..n-1]``    ``static` `void` `printKMissing(``int``[] arr,``                              ``int` `n,``                              ``int` `k)``    ``{``        ``Array.Sort(arr);` `        ``// Find first positive number``        ``int` `i = 0;``        ``while` `(i < n && arr[i] <= 0)``            ``i++;` `        ``// Now find missing numbers``        ``// between array elements``        ``int` `count = 0, curr = 1;``        ``while` `(count < k && i < n) {``            ``if` `(arr[i] != curr) {``                ``Console.Write(curr + ``" "``);``                ``count++;``            ``}``            ``else``                ``i++;``            ``curr++;``        ``}` `        ``// Find missing numbers``        ``// after maximum.``        ``while` `(count < k) {``            ``Console.Write(curr + ``" "``);``            ``curr++;``            ``count++;``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr = {2, 3, 4};``        ``int` `n = arr.Length;``        ``int` `k = 3;``        ``printKMissing(arr, n, k);``    ``}``}` `// This code is contributed by Nitin Mittal`

## PHP

 ``

## Javascript

 ``

Output

`1 5 6 `

Time Complexity: O(n Log n)
Auxiliary Space: O(1)

Alternative Method:

1. We can use hashmap to search in O(1) time.
2. Use a dictionary to store values in the array.
3. We run a loop from 1 to n+k and check whether they are in hashmap.
4. If they are not present print the number.
5. if all k elements are found break the loop.

Implementation:

## C++

 `// C++ code for``// the above approach``#include ``using` `namespace` `std;` `// Program to print first k``// missing number``void` `printmissingk(``int` `arr[],``                   ``int` `n, ``int` `k)``{``  ``// Creating a hashmap``  ``map<``int``, ``int``> d;` `  ``// Iterate over array``  ``for` `(``int` `i = 0; i < n; i++)``    ``d[arr[i]] = arr[i];` `  ``int` `cnt = 1;``  ``int` `fl = 0;` `  ``// Iterate to find missing``  ``// element``  ``for` `(``int` `i = 0; i < (n + k); i++)``  ``{``    ``if` `(d.find(cnt) == d.end())``    ``{``      ``fl += 1;``      ``cout << cnt << ``" "``;``      ``if` `(fl == k)``        ``break``;``    ``}``    ``cnt += 1;``  ``}``}` `// Driver Code``int` `main()``{``  ``int` `arr[] = {1, 4, 3};``  ``int` `n = ``sizeof``(arr) /``          ``sizeof``(arr[0]);``  ``int` `k = 3;;``  ``printmissingk(arr, n, k);``}` `// This code is contributed by Chitranayal`

## Java

 `// Java code for``// the above approach``import` `java.io.*;``import` `java.util.HashMap;` `class` `GFG``{` `    ``// Program to print first k``    ``// missing number``    ``static` `void` `printmissingk(``int` `arr[], ``int` `n, ``int` `k)``    ``{``        ``// Creating a hashmap``        ``HashMap d = ``new` `HashMap<>();` `        ``// Iterate over array``        ``for` `(``int` `i = ``0``; i < n; i++)``            ``d.put(arr[i], arr[i]);` `        ``int` `cnt = ``1``;``        ``int` `fl = ``0``;` `        ``// Iterate to find missing``        ``// element``        ``for` `(``int` `i = ``0``; i < (n + k); i++) {``            ``if` `(!d.containsKey(cnt)) {``                ``fl += ``1``;``                ``System.out.print(cnt + ``" "``);``                ``if` `(fl == k)``                    ``break``;``            ``}``            ``cnt += ``1``;``        ``}``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `arr[] = { ``1``, ``4``, ``3` `};``        ``int` `n = arr.length;``        ``int` `k = ``3``;``        ``printmissingk(arr, n, k);``    ``}``}` `// This code is contributed by subhammahato348.`

## Python3

 `# Python3 code for above approach` `# Program to print first k``# missing number``def` `printmissingk(arr,n,k):``  ` `    ``#creating a hashmap``    ``d``=``{}``    ` `    ``# Iterate over array``    ``for` `i ``in` `range``(``len``(arr)):``        ``d[arr[i]]``=``arr[i]``        ` `    ``cnt``=``1``    ``fl``=``0``    ` `    ``# Iterate to find missing``    ``# element``    ``for` `i ``in` `range``(n``+``k):``        ``if` `cnt ``not` `in` `d:``            ``fl``+``=``1``            ``print``(cnt,end``=``" "``)``            ``if` `fl``=``=``k:``                ``break``        ``cnt``+``=``1``    ``print``()` `# Driver Code``arr``=``[``1``,``4``,``3``]``n``=``len``(arr)``k``=``3``printmissingk(arr,n,k)` `#This code is contributed by Thirumalai Srinivasan`

## C#

 `// C# code for``// the above approach``using` `System;``using` `System.Collections.Generic;` `public` `class` `GFG``{` `  ``// Program to print first k``  ``// missing number``  ``static` `void` `printmissingk(``int``[] arr, ``int` `n, ``int` `k)``  ``{` `    ``// Creating a hashmap``    ``Dictionary<``int``,``int``> d = ``new` `Dictionary<``int``,``int``>();` `    ``// Iterate over array``    ``for` `(``int` `i = 0; i < n; i++)``    ``{``      ``d.Add(arr[i], arr[i]);``    ``}``    ``int` `cnt = 1;``    ``int` `fl = 0;` `    ``// Iterate to find missing``    ``// element``    ``for` `(``int` `i = 0; i < (n + k); i++)``    ``{``      ``if` `(!d.ContainsKey(cnt))``      ``{``        ``fl += 1;``        ``Console.Write(cnt + ``" "``);``        ``if` `(fl == k)``          ``break``;``      ``}``      ``cnt += 1;``    ``}``  ``}` `  ``// Driver Code``  ``static` `public` `void` `Main (){``    ``int``[] arr = { 1, 4, 3 };``    ``int` `n = arr.Length;``    ``int` `k = 3;``    ``printmissingk(arr, n, k);``  ``}``}` `// This code is contributed by avanitrachhadiya2155`

## Javascript

 ``

Output

`2 5 6 `

Time complexity: O(n+k)
Auxiliary Space: O(n)

This article is contributed by Biswajit Mohapatra. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up