# 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 4

Input : 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 ` `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; ` `} `

## 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 mp = ``new` `HashMap(); ` ` `  `        ``// 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``)); ` `    ``} ` `} `

## 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 `

Output:

```4
```

Time complexity: O(m + n)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

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.

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.