Find frequencies of elements of an array present in another array
Last Updated :
30 Nov, 2021
Given two arrays arr[] and brr[] of sizes N and M respectively, the task is to find the frequencies of the elements of array brr[] in arr[].
Examples:
Input: N = 8, arr[] = {29, 8, 8, 8, 7, 7, 8, 7}, M = 3, brr[] = {7, 8, 29}
Output: {3, 4, 1}
Explanation: Frequencies of 7, 8 and 29 are 3, 4 and 1 respectively in arr[]
Input: arr[] = N = 6, {4, 5, 6, 5, 5, 3}, M = 3, brr[] = {1, 2, 3}
Output: {0, 0, 1}
Explanation: Frequencies of 1, 2 and 3 are 0, 0 and 1 respectively in arr[]
Approach: The task can easily be solved by storing the frequencies of elements of array arr[] in a hashmap. Iterate over the array brr[] and check if it is present in hashmap or not, and store the corresponding frequency.
Below is the implementation of the above approach:
C++14
#include <bits/stdc++.h>
using namespace std;
void solve( int arr[], int brr[], int N, int M)
{
unordered_map< int , int > occ;
for ( int i = 0; i < N; i++)
occ[arr[i]]++;
for ( int i = 0; i < M; i++) {
if (occ.find(brr[i]) != occ.end()) {
cout << occ[brr[i]] << " " ;
}
else {
cout << 0 << " " ;
}
}
}
int main()
{
int N = 8;
int arr[N] = { 29, 8, 8, 8, 7, 7, 8, 7 };
int M = 3;
int brr[M] = { 7, 8, 29 };
solve(arr, brr, N, M);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void solve( int arr[], int brr[], int N, int M)
{
HashMap<Integer,Integer> occ= new HashMap<Integer,Integer>();
for ( int i = 0 ; i < N; i++)
{
if (occ.containsKey(arr[i])){
occ.put(arr[i], occ.get(arr[i])+ 1 );
}
else {
occ.put(arr[i], 1 );
}
}
for ( int i = 0 ; i < M; i++) {
if (occ.containsKey(brr[i])) {
System.out.print(occ.get(brr[i])+ " " );
}
else {
System.out.print( 0 + " " );
}
}
}
public static void main(String[] args)
{
int N = 8 ;
int arr[] = { 29 , 8 , 8 , 8 , 7 , 7 , 8 , 7 };
int M = 3 ;
int brr[] = { 7 , 8 , 29 };
solve(arr, brr, N, M);
}
}
|
Python3
def solve(arr, brr, N, M) :
occ = dict .fromkeys(arr, 0 );
for i in range (N) :
occ[arr[i]] + = 1 ;
for i in range (M) :
if brr[i] in occ :
print (occ[brr[i]], end = " " );
else :
print ( 0 , end = " " );
if __name__ = = "__main__" :
N = 8 ;
arr = [ 29 , 8 , 8 , 8 , 7 , 7 , 8 , 7 ];
M = 3 ;
brr = [ 7 , 8 , 29 ];
solve(arr, brr, N, M);
|
C#
using System;
using System.Collections.Generic;
class GFG
{
static void solve( int [] arr, int [] brr, int N, int M)
{
Dictionary< int , int > occ = new Dictionary< int , int >();
for ( int i = 0; i < N; i++)
{
if (occ.ContainsKey(arr[i]))
{
occ[arr[i]] = occ[arr[i]] + 1;
}
else
{
occ[arr[i]] = 1;
}
}
for ( int i = 0; i < M; i++)
{
if (occ.ContainsKey(brr[i]))
{
Console.Write(occ[brr[i]] + " " );
}
else
{
Console.Write(0 + " " );
}
}
}
public static void Main(String[] args)
{
int N = 8;
int [] arr = { 29, 8, 8, 8, 7, 7, 8, 7 };
int M = 3;
int [] brr = { 7, 8, 29 };
solve(arr, brr, N, M);
}
}
|
Javascript
<script>
function solve(arr, brr, N, M) {
let occ = new Map();
for (let i = 0; i < N; i++) {
if (occ.has(arr[i])) {
occ.set(arr[i], occ.get(arr[i]) + 1)
} else {
occ.set(arr[i], 1)
}
}
for (let i = 0; i < M; i++) {
if (occ.has(brr[i])) {
document.write(occ.get(brr[i]) + " " );
}
else {
document.write(0 + " " );
}
}
}
let N = 8;
let arr = [ 29, 8, 8, 8, 7, 7, 8, 7 ];
let M = 3;
let brr = [ 7, 8, 29 ];
solve(arr, brr, N, M);
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(N)
Share your thoughts in the comments
Please Login to comment...