# Count elements present in first array but not in second

Given two arrays (which may or may not be sorted) of sizes M and N respectively. There arrays are such that they might have some common elements in them. You need to count the number of elements whose occurrences are more in first array than second.

**Examples:**

Input : arr1[] = {41, 43, 45, 50}, M = 4

arr2[] = {55, 67, 65, 61, 62}, N = 5

Output : 4

Explanation:

arr1[] contains 41, 43, 45, 50 with frequency all having 1

arr2[] does not contain any such element which is common in both hence count will be 4Input : arr1[] = {40, 45, 56, 60}, M = 4

arr2[] = {40, 45, 56, 58}, N = 4

Output : 1

Explanation:

arr1[] contains 40, 45, 56, 60 with frequency all having 1

arr2[] contains 3 elements in common with arr1[] which are 40, 45, 56

but not 60 hence count becomes 1

The idea is to use a hash map and keep the count of frequency of numbers in the first array. While traversing the second array reduce the count in the map for every integer encountered. Now count the elements whose frequency is more than 0 otherwise return 0.

## C++

`// C++ to count number of elements present in arr1 whose ` `// occurrence is more than in arr2 ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `int` `Largercount(` `int` `arr1[], ` `int` `arr2[], ` `int` `m, ` `int` `n) ` `{ ` ` ` `bool` `f = ` `false` `; ` ` ` `int` `count = 0; ` ` ` ` ` `// map to store frequency of elements present in arr1 ` ` ` `unordered_map<` `int` `, ` `int` `> mp; ` ` ` ` ` `// frequency of elements of arr1 is calulated ` ` ` `for` `(` `int` `i = 0; i < m; i++) ` ` ` `mp[arr1[i]]++; ` ` ` ` ` `// check if the elements of arr2 ` ` ` `// is present in arr2 or not ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `if` `(mp.find(arr2[i]) != mp.end() && mp[arr2[i]] != 0) ` ` ` `mp[arr2[i]]--; ` ` ` ` ` `// count the elements of arr1 whose ` ` ` `// frequency is more than arr2 ` ` ` `for` `(` `int` `i = 0; i < m; i++) { ` ` ` `if` `(mp[arr1[i]] != 0) { ` ` ` `count++; ` ` ` `mp[arr1[i]] = 0; ` ` ` `} ` ` ` `} ` ` ` ` ` `return` `count; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `arr1[] = { 2, 4, 4, 6, 6, 6, 8, 9 }; ` ` ` `int` `arr2[] = { 2, 2, 4, 6, 6 }; ` ` ` `cout << Largercount(arr1, arr2, 8, 5); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java to count number of elements present in arr1 whose ` `// occurrence is more than in arr2 ` `import` `java.util.*; ` `import` `java.lang.*; ` `import` `java.io.*; ` ` ` `class` `GFG { ` ` ` `public` `static` `int` `Largercount(` `int` `arr1[], ` `int` `arr2[], ` `int` `m, ` `int` `n) ` ` ` `{ ` ` ` `int` `count = ` `0` `; ` ` ` ` ` `// map to store frequency of elements present in arr1 ` ` ` `HashMap<Integer, Integer> mp = ` `new` `HashMap<Integer, Integer>(); ` ` ` ` ` `// frequency of elements of arr1 is calulated ` ` ` `for` `(` `int` `i = ` `0` `; i < m; i++) { ` ` ` `int` `key = arr1[i]; ` ` ` `if` `(mp.containsKey(key)) { ` ` ` `int` `freq = mp.get(key); ` ` ` `freq++; ` ` ` `mp.put(key, freq); ` ` ` `} ` ` ` `else` ` ` `mp.put(key, ` `1` `); ` ` ` `} ` ` ` ` ` `// check if the elements of arr2 is present in arr2 or not ` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) { ` ` ` `if` `(mp.containsKey(arr2[i]) && mp.get(arr2[i]) != ` `0` `) { ` ` ` `int` `freq = mp.get(arr2[i]); ` ` ` `freq--; ` ` ` `mp.put(arr2[i], freq); ` ` ` `} ` ` ` `} ` ` ` ` ` `// count the elements of arr1 whose ` ` ` `// frequency is more than arr2 ` ` ` `for` `(` `int` `i = ` `0` `; i < m; i++) { ` ` ` `if` `(mp.get(arr1[i]) != ` `0` `) { ` ` ` `count++; ` ` ` `mp.put(arr1[i], ` `0` `); ` ` ` `} ` ` ` `} ` ` ` ` ` `return` `count; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `main(String[] args) ` ` ` `{ ` ` ` `int` `arr1[] = ` `new` `int` `[] { ` `2` `, ` `4` `, ` `4` `, ` `6` `, ` `6` `, ` `6` `, ` `8` `, ` `9` `}; ` ` ` `int` `arr2[] = ` `new` `int` `[] { ` `2` `, ` `2` `, ` `4` `, ` `6` `, ` `6` `}; ` ` ` ` ` `System.out.print(Largercount(arr1, arr2, ` `8` `, ` `5` `)); ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

## Python3

# Python3 to count number of elements

# present in arr1 whose occurrence is

# more than in arr2

def Largercount(arr1, arr2, m, n):

count = 0

# map to store frequency of

# elements present in arr1

mp=dict()

# frequency of elements of arr1

# is calulated

for i in range(m):

mp[arr1[i]] = mp.get(arr1[i], 0) + 1

# check if the elements of arr2

# is present in arr2 or not

for i in range(n):

if (arr2[i] in mp.keys() and

mp[arr2[i]] != 0):

mp[arr2[i]] -= 1

# count the elements of arr1 whose

# frequency is more than arr2

for i in range(m):

if (mp[arr1[i]] != 0):

count += 1

mp[arr1[i]] = 0

return count

# Driver code

arr1 = [2, 4, 4, 6, 6, 6, 8, 9]

arr2 = [2, 2, 4, 6, 6 ]

print(Largercount(arr1, arr2, 8, 5))

# This code is contributed by mohit kumar

## C#

`// C# to count number of elements ` `// present in arr1 whose occurrence ` `// is more than in arr2 ` `using` `System; ` `using` `System.Collections.Generic; ` ` ` `class` `GFG ` `{ ` `public` `static` `int` `Largercount(` `int` `[] arr1, ` ` ` `int` `[] arr2, ` ` ` `int` `m, ` `int` `n) ` `{ ` ` ` `int` `count = 0; ` ` ` ` ` `// map to store frequency of ` ` ` `// elements present in arr1 ` ` ` `Dictionary<` `int` `, ` ` ` `int` `> mp = ` `new` `Dictionary<` `int` `, ` ` ` `int` `>(); ` ` ` ` ` `// frequency of elements ` ` ` `// of arr1 is calulated ` ` ` `for` `(` `int` `i = 0; i < m; i++) ` ` ` `{ ` ` ` `int` `key = arr1[i]; ` ` ` `if` `(mp.ContainsKey(key)) ` ` ` `{ ` ` ` `int` `freq = mp[key]; ` ` ` `freq++; ` ` ` `mp[key] = freq; ` ` ` `} ` ` ` `else` ` ` `{ ` ` ` `mp[key] = 1; ` ` ` `} ` ` ` `} ` ` ` ` ` `// check if the elements of arr2 ` ` ` `// is present in arr2 or not ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `{ ` ` ` `if` `(mp.ContainsKey(arr2[i]) && ` ` ` `mp[arr2[i]] != 0) ` ` ` `{ ` ` ` `int` `freq = mp[arr2[i]]; ` ` ` `freq--; ` ` ` `mp[arr2[i]] = freq; ` ` ` `} ` ` ` `} ` ` ` ` ` `// count the elements of arr1 whose ` ` ` `// frequency is more than arr2 ` ` ` `for` `(` `int` `i = 0; i < m; i++) ` ` ` `{ ` ` ` `if` `(mp[arr1[i]] != 0) ` ` ` `{ ` ` ` `count++; ` ` ` `mp[arr1[i]] = 0; ` ` ` `} ` ` ` `} ` ` ` ` ` `return` `count; ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main(` `string` `[] args) ` `{ ` ` ` `int` `[] arr1 = ` `new` `int` `[] {2, 4, 4, 6, ` ` ` `6, 6, 8, 9}; ` ` ` `int` `[] arr2 = ` `new` `int` `[] {2, 2, 4, 6, 6}; ` ` ` ` ` `Console.Write(Largercount(arr1, arr2, 8, 5)); ` `} ` `} ` ` ` `// This code is contributed by Shrikant13 ` |

*chevron_right*

*filter_none*

**Output:**

4

**Time complexity:** O(m + n)

## Recommended Posts:

- Count the number of sub-arrays such that the average of elements present in the sub-array is greater than that not present in the sub-array
- Elements to be added so that all elements of a range are present in array
- Find elements which are present in first array and not in second
- Count pairs with average present in the same array
- Sum of elements whose square root is present in the array
- Count number of elements between two given elements in array
- Count array elements that divide the sum of all other elements
- For each element in 1st array count elements less than or equal to it in 2nd array
- For each element in 1st array count elements less than or equal to it in 2nd array | Set 2
- Count and Sum of composite elements in an array
- Count distinct elements in an array
- Count number of even and odd elements in an array
- Count elements that are divisible by at-least one element in another array
- Count the number of elements in an array which are divisible by k
- Count of elements that can be deleted without disturbing the mean of the initial array

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.