Given two arrays, the task is that we find numbers which are present in first array, but not present in the second array.
Examples :
Input : a[] = {1, 2, 3, 4, 5, 10};
b[] = {2, 3, 1, 0, 5};
Output : 4 10
4 and 10 are present in first array, but
not in second array.
Input : a[] = {4, 3, 5, 9, 11};
b[] = {4, 9, 3, 11, 10};
Output : 5
Method 1 (Simple): A Naive Approach is to use two loops and check element which not present in second array.
Implementation:
C++
// C++ simple program to // find elements which are // not present in second array#include<bits/stdc++.h>using namespace std;// Function for finding // elements which are there // in a[] but not in b[].void findMissing(int a[], int b[], int n, int m){ for (int i = 0; i < n; i++) { int j; for (j = 0; j < m; j++) if (a[i] == b[j]) break; if (j == m) cout << a[i] << " "; }}// Driver codeint main(){ int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = sizeof(a) / sizeof(a[0]); int m = sizeof(b) / sizeof(b[1]); findMissing(a, b, n, m); return 0;} |
Java
// Java simple program to // find elements which are // not present in second arrayclass GFG { // Function for finding elements // which are there in a[] but not // in b[]. static void findMissing(int a[], int b[], int n, int m) { for (int i = 0; i < n; i++) { int j; for (j = 0; j < m; j++) if (a[i] == b[j]) break; if (j == m) System.out.print(a[i] + " "); } } // Driver Code public static void main(String[] args) { int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = a.length; int m = b.length; findMissing(a, b, n, m); }}// This code is contributed// by Anant Agarwal. |
Python 3
# Python 3 simple program to find elements # which are not present in second array# Function for finding elements which # are there in a[] but not in b[].def findMissing(a, b, n, m): for i in range(n): for j in range(m): if (a[i] == b[j]): break if (j == m - 1): print(a[i], end = " ")# Driver codeif __name__ == "__main__": a = [ 1, 2, 6, 3, 4, 5 ] b = [ 2, 4, 3, 1, 0 ] n = len(a) m = len(b) findMissing(a, b, n, m)# This code is contributed # by ChitraNayal |
C#
// C# simple program to find elements// which are not present in second arrayusing System;class GFG { // Function for finding elements // which are there in a[] but not // in b[]. static void findMissing(int []a, int []b, int n, int m) { for (int i = 0; i < n; i++) { int j; for (j = 0; j < m; j++) if (a[i] == b[j]) break; if (j == m) Console.Write(a[i] + " "); } } // Driver code public static void Main() { int []a = {1, 2, 6, 3, 4, 5}; int []b = {2, 4, 3, 1, 0}; int n = a.Length; int m = b.Length; findMissing(a, b, n, m); }}// This code is contributed by vt_m. |
Javascript
<script>// Javascript simple program to // find elements which are // not present in second array // Function for finding elements // which are there in a[] but not // in b[]. function findMissing(a,b,n,m) { for (let i = 0; i < n; i++) { let j; for (j = 0; j < m; j++) if (a[i] == b[j]) break; if (j == m) document.write(a[i] + " "); } } // Driver Code let a=[ 1, 2, 6, 3, 4, 5 ]; let b=[2, 4, 3, 1, 0]; let n = a.length; let m = b.length; findMissing(a, b, n, m); // This code is contributed by avanitrachhadiya2155 </script> |
PHP
<?php// PHP simple program to find // elements which are not // present in second array// Function for finding // elements which are there// in a[] but not in b[].function findMissing( $a, $b, $n, $m){ for ( $i = 0; $i < $n; $i++) { $j; for ($j = 0; $j < $m; $j++) if ($a[$i] == $b[$j]) break; if ($j == $m) echo $a[$i] , " "; }}// Driver code$a = array( 1, 2, 6, 3, 4, 5 );$b = array( 2, 4, 3, 1, 0 );$n = count($a);$m = count($b);findMissing($a, $b, $n, $m);// This code is contributed by anuj_67.?> |
6 5
Time complexity: O(n*m) since using inner and outer loops
Auxiliary Space : O(1)
Method 2 (Use Hashing): In this method, we store all elements of second array in a hash table (unordered_set). One by one check all elements of first array and print all those elements which are not present in the hash table.
Implementation:
C++
// C++ efficient program to// find elements which are not// present in second array#include<bits/stdc++.h>using namespace std;// Function for finding// elements which are there// in a[] but not in b[].void findMissing(int a[], int b[], int n, int m){ // Store all elements of // second array in a hash table unordered_set <int> s; for (int i = 0; i < m; i++) s.insert(b[i]); // Print all elements of // first array that are not // present in hash table for (int i = 0; i < n; i++) if (s.find(a[i]) == s.end()) cout << a[i] << " ";}// Driver codeint main(){ int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = sizeof(a) / sizeof(a[0]); int m = sizeof(b) / sizeof(b[1]); findMissing(a, b, n, m); return 0;} |
Java
// Java efficient program to find elements// which are not present in second arrayimport java.util.HashSet;import java.util.Set;public class GfG{ // Function for finding elements which // are there in a[] but not in b[]. static void findMissing(int a[], int b[], int n, int m) { // Store all elements of // second array in a hash table HashSet<Integer> s = new HashSet<>(); for (int i = 0; i < m; i++) s.add(b[i]); // Print all elements of first array // that are not present in hash table for (int i = 0; i < n; i++) if (!s.contains(a[i])) System.out.print(a[i] + " "); } public static void main(String []args){ int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = a.length; int m = b.length; findMissing(a, b, n, m); }} // This code is contributed by Rituraj Jain |
Python3
# Python3 efficient program to find elements # which are not present in second array# Function for finding elements which # are there in a[] but not in b[].def findMissing(a, b, n, m): # Store all elements of second # array in a hash table s = dict() for i in range(m): s[b[i]] = 1 # Print all elements of first array # that are not present in hash table for i in range(n): if a[i] not in s.keys(): print(a[i], end = " ")# Driver codea = [ 1, 2, 6, 3, 4, 5 ]b = [ 2, 4, 3, 1, 0 ]n = len(a)m = len(b)findMissing(a, b, n, m)# This code is contributed by mohit kumar |
C#
// C# efficient program to find elements // which are not present in second array using System; using System.Collections.Generic;class GfG{ // Function for finding elements which // are there in a[] but not in b[]. static void findMissing(int []a, int []b, int n, int m) { // Store all elements of // second array in a hash table HashSet<int> s = new HashSet<int>(); for (int i = 0; i < m; i++) s.Add(b[i]); // Print all elements of first array // that are not present in hash table for (int i = 0; i < n; i++) if (!s.Contains(a[i])) Console.Write(a[i] + " "); } // Driver code public static void Main(String []args) { int []a = { 1, 2, 6, 3, 4, 5 }; int []b = { 2, 4, 3, 1, 0 }; int n = a.Length; int m = b.Length; findMissing(a, b, n, m); }}/* This code contributed by PrinciRaj1992 */ |
Javascript
<script>// Javascript efficient program to find elements// which are not present in second array // Function for finding elements which // are there in a[] but not in b[]. function findMissing(a,b,n,m) { // Store all elements of // second array in a hash table let s = new Set(); for (let i = 0; i < m; i++) s.add(b[i]); // Print all elements of first array // that are not present in hash table for (let i = 0; i < n; i++) if (!s.has(a[i])) document.write(a[i] + " "); } let a=[1, 2, 6, 3, 4, 5 ]; let b=[2, 4, 3, 1, 0]; let n = a.length; let m = b.length; findMissing(a, b, n, m); // This code is contributed by patel2127</script> |
6 5
Time complexity : O(n+m)
Auxiliary Space : O(n)
This article is contributed by DANISH_RAZA . If you like neveropen 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 neveropen main page and help other Geeks.
Approach 3: Recursion
Algorithm:
- “findMissing” function takes four parameters, array “a” of size “n” and array “b” of size “m”.
- Base case : If n==0 , then there are no more elements left to check, so return from the function.
- Recursive case : Check if the first element of array “a” is present in array “b”. For this, use a for loop and iterate over all elements of array “b”.
- If first element of array “a” is not in array “b”, print it.
- Recursively call the “findMissing” function with the remaining elements of array “a” and array “b”. For this, increment the pointer of array “a” and decrease it’s size “n” by 1.
- Call the recursive function “findMissing” in main() with array “a” and array “b”, and their respective sizes “n” and “m”.
Here’s the implementation:
C++
#include <iostream>using namespace std;void findMissing(int a[], int b[], int n, int m) { // Base case: if n is zero, then there are no more elements to check if (n == 0) { return; } // Recursive case: check if the first element of a[] is in b[] int i; for (i = 0; i < m; i++) { if (a[0] == b[i]) { break; } } // If the first element of a[] is not in b[], print it if (i == m) { cout << a[0] << " "; } // Recursively call findMissing with the remaining elements of a[] and b[] findMissing(a+1, b, n-1, m);}int main() { int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = sizeof(a) / sizeof(a[0]); int m = sizeof(b) / sizeof(b[1]); findMissing(a, b, n, m); cout << endl; return 0;}// This code is contributed by Vaibhav Saroj |
C
#include <stdio.h>void findMissing(int a[], int b[], int n, int m) { // Base case: if n is zero, then there are no more elements to check if (n == 0) { return; } // Recursive case: check if the first element of a[] is in b[] int i; for (i = 0; i < m; i++) { if (a[0] == b[i]) { break; } } // If the first element of a[] is not in b[], print it if (i == m) { printf("%d ", a[0]); } // Recursively call findMissing with the remaining elements of a[] and b[] findMissing(a+1, b, n-1, m);}int main() { int a[] = { 1, 2, 6, 3, 4, 5 }; int b[] = { 2, 4, 3, 1, 0 }; int n = sizeof(a) / sizeof(a[0]); int m = sizeof(b) / sizeof(b[0]); findMissing(a, b, n, m); printf("\n"); return 0;}// This code is contributed by Vaibhav Saroj |
Java
import java.util.*;class Main { public static void findMissing(int[] a, int[] b, int n, int m) { // Base case: if n is zero, then there are no more elements to check if (n == 0) { return; } // Recursive case: check if the first element of a[] is in b[] int i; for (i = 0; i < m; i++) { if (a[0] == b[i]) { break; } } // If the first element of a[] is not in b[], print it if (i == m) { System.out.print(a[0] + " "); } // Recursively call findMissing with the remaining elements of a[] and b[] findMissing(Arrays.copyOfRange(a, 1, n), b, n-1, m); } public static void main(String[] args) { int[] a = { 1, 2, 6, 3, 4, 5 }; int[] b = { 2, 4, 3, 1, 0 }; int n = a.length; int m = b.length; findMissing(a, b, n, m); System.out.println(); }}// This code is contributed by Vaibhav Saroj |
Python3
# codedef find_missing(a, b, n, m): # Base case: if n is zero, then there are no more elements to check if n == 0: return # Recursive case: check if the first element of a[] is in b[] i = 0 while i < m: if a[0] == b[i]: break i += 1 # If the first element of a[] is not in b[], print it if i == m: print(a[0], end=" ") # Recursively call find_missing with the remaining elements of a[] and b[] find_missing(a[1:], b, n - 1, m)def main(): a = [1, 2, 6, 3, 4, 5] b = [2, 4, 3, 1, 0] n = len(a) m = len(b) find_missing(a, b, n, m) print()if __name__ == "__main__": main()#This code is contributed by aeroabrar_31 |
C#
using System;public class Program{ public static void FindMissing(int[] a, int[] b, int n, int m) { // Base case: if n is zero, then there are no more elements to check if (n == 0) { return; } // Recursive case: check if the first element of a[] is in b[] int i; for (i = 0; i < m; i++) { if (a[0] == b[i]) { break; } } // If the first element of a[] is not in b[], print it if (i == m) { Console.Write(a[0] + " "); } // Recursively call FindMissing with the remaining elements of a[] and b[] FindMissing(new ArraySegment<int>(a, 1, n - 1).ToArray(), b, n - 1, m); } public static void Main(string[] args) { int[] a = { 1, 2, 6, 3, 4, 5 }; int[] b = { 2, 4, 3, 1, 0 }; int n = a.Length; int m = b.Length; FindMissing(a, b, n, m); Console.WriteLine(); }}//This code is contributed by aeroabrar_31 |
Javascript
function findMissing(a, b, n, m) { // Base case: if n is zero, then there are no more elements to check if (n === 0) { return; } // Recursive case: check if the first element of a[] is in b[] let i; for (i = 0; i < m; i++) { if (a[0] === b[i]) { break; } } // If the first element of a[] is not in b[], print it if (i === m) { console.log(a[0] + " "); } // Recursively call findMissing with the remaining elements of a[] and b[] findMissing(a.slice(1), b, n - 1, m);}const a = [1, 2, 6, 3, 4, 5];const b = [2, 4, 3, 1, 0];const n = a.length;const m = b.length;findMissing(a, b, n, m);console.log(); // add a newline at the end// This code is contributed by Vaibhav Saroj |
6 5
This Recursive approach and code is contributed by Vaibhav Saroj .
The time and space complexity:
Time complexity : O(nm) .
Space complexity : O(1) .
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
