Skip to content
Programmingoneonone
Programmingoneonone
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
    • Cybersecurity
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
  • Work with US
Programmingoneonone
Programmingoneonone

HackerRank Missing Numbers problem solution

YASH PAL, 31 July 202423 January 2026

In this HackerRank Missing Numbers problem solution, we have given two arrays of integers, find which elements in the second array are missing from the first array.

Notes

  • If a number occurs multiple times in the lists, you must ensure that the frequency of that number in both lists is the same. If that is not the case, then it is also a missing number.
  • Return the missing numbers sorted ascending.
  • Only include a missing number once, even if it is missing multiple times.
  • The difference between the maximum and minimum numbers in the original list is less than or equal to .

Function Description

Complete the missingNumbers function in the editor below. It should return a sorted array of missing numbers.

missingNumbers has the following parameter(s):

  • int arr[n]: the array with missing numbers
  • int brr[m]: the original array of numbers

Returns

  • int[]: an array of integers
HackerRank Missing Numbers problem solution

HackerRank Missing Numbers problem solution in Python.

from collections import Counter

k1 = input()
c1 = Counter(map(int, input().split()))
k2 = input()
c2 = Counter(map(int, input().split()))

if k1 > k2:
    c2, c1 = c1, c2
    
l = []
for k in c2.keys():
    if k not in c1 or c1[k] < c2[k]:
        l.append(k)
        
print(' '.join(map(str, sorted(l))))

Missing Numbers problem solution in Java.

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] A = new int[n];

        for (int i = 0; i < n; i++) {
            A[i] = in.nextInt();
        }

        int m = in.nextInt();
        int[] B = new int[m];

        for (int i = 0; i < m; i++) {
            B[i] = in.nextInt();
        }

        HashMap<Integer, Integer> freqs = new HashMap<Integer, Integer>();

        for (int i = 0; i < m; i++) {
            if (freqs.containsKey(B[i])) {
                int freq = freqs.get(B[i]);
                freqs.replace(B[i], freq + 1);
            } else {
                freqs.put(B[i], 1);
            }
        }

        for (int i = 0; i < n; i++) {
            if (freqs.containsKey(A[i])) {
                int freq = freqs.get(A[i]);
                if (freq == 1) {
                    freqs.remove(A[i]);
                } else {
                    freqs.replace(A[i], freq - 1);
                }
            } else {
                System.out.println("error");
            }
        }

        StringBuilder answer = new StringBuilder();
        Iterator it = freqs.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            answer.append(pair.getKey());
            answer.append(" ");
        }

        System.out.println(answer.toString());
    }
}

Problem solution in C++.

#include<iostream>

using namespace std;

const int maxn = 10000;

int A[maxn*2 + 5];

int main() {
  int n, m;
  int xmin = maxn, xmax = -maxn;
  cin >> n;
  for( int i = 0; i<n; i++ ) {
    int tmp;
    cin >> tmp;
    A[tmp] --;
  }
  cin >> m;
  for( int i = 0; i<m; i++ ) {
    int tmp;
    cin >> tmp;
    A[tmp] ++;
    if (xmax < tmp) { xmax = tmp; }
    if (xmin > tmp) { xmin = tmp; }
  }
  for( int i=xmin; i<=xmax; i++ ) {
    if( A[i] > 0 ) {
      cout << i << " ";
    }
  }
  return 0;
}

Problem solution in C.

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

#define read_int(x) scanf("%d", &x)
#define RANGE 100
#define BASE_IDX (RANGE + 1)
#define COUNT_SIZE (RANGE * 2)

int main() {
    
    int m, n; 
    int base, k, i;
    int count[COUNT_SIZE];
    
    memset(count, 0, COUNT_SIZE * sizeof(int));
    
    read_int(m);
    read_int(k);
    base = k;
    count[BASE_IDX] = 1;
    for (i = 1; i < m; i++) {
        read_int(k);
        count[BASE_IDX + (k - base)]++;
    }
    
    read_int(n);  
    for (i = 0; i < n; i++) {
        read_int(k);
        count[BASE_IDX + (k - base)]--;
    }

    for (i = 0; i < COUNT_SIZE; i++) {
        if (count[i] < 0) printf("%d ", base + (i - BASE_IDX));
    }
    printf("n");
  
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */    
    return 0;
}

Algorithms coding problems solutions AlgorithmsHackerRank

Post navigation

Previous post
Next post

Leave a Reply

Your email address will not be published. Required fields are marked *

Pages

  • About US
  • Contact US
  • Privacy Policy

Follow US

  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2026 Programmingoneonone | WordPress Theme by SuperbThemes