Given an array of
Examples:
Input: arr[] = {2, 0, 4, 6, 2}, x = 2
Output: 2 0 0 1 2
For x = 2, the average values for 2, 0, 4, 6, 2 would be 2, 1, 3, 4, 2 respectively. So, the count array would result in 2, 0, 0, 1, 2.Input: arr[] = {9, 5, 2, 4, 0, 3}, x = 3
Output: 0 1 1 1 0 1
For x = 3, the average values for 9, 5, 2, 4, 0, 3 would be 6, 4, 2, 3, 1, 2 respectively. So, the count array would result in 0, 1, 1, 1, 0, 1.
Approach:
- Traverse the array and map every element with its count of occurrence in the array.
- Now traverse the array again, take the average of the array element and given
and check for its value in the map.
Below is the implementation of the above approach:
// CPP program to find the count of // occurrences of the average of array // elements with a given number #include<bits/stdc++.h> using namespace std;
// Function to find the count of
// occurrences of the average of array
// elements with a given number
void getAverageCountArray( int a[], int x, int N)
{
// mp to store count of occurrence
// of every array element in the array
map< int , int > mp;
// Array that stores the average
// count for given array
int avg[N] = {0};
int val, av;
for ( int i = 0; i < N; i++)
{
// first occurrence of a[i]
if (mp[a[i]] == 0)
mp[a[i]] = 1;
else
mp[a[i]]++;
// element has already occurred before
// so increase its count
}
for ( int i = 0; i < N; i++)
{
av = int ((a[i] + x) / 2);
if (mp.find(av) != mp.end())
{
val = mp[av];
avg[i] = val;
}
}
// Printing the average count array
for ( int i = 0; i < N; i++)
{
cout << avg[i] << " " ;
}
}
// Driver code
int main()
{
int a[] = { 2, 0, 4, 6, 2 };
int x = 2;
int N = sizeof (a)/ sizeof (a[0]);
getAverageCountArray(a, x, N);
}
// This code is contributed by // Surendra_Gangwar |
// Java program to find the count of // occurrences of the average of array // elements with a given number import java.io.*;
import java.util.*;
import java.lang.*;
class GFG {
// Function to find the count of
// occurrences of the average of array
// elements with a given number
static void getAverageCountArray( int [] a, int x, int N)
{
// Map to store count of occurrence
// of every array element in the array
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
// Array that stores the average
// count for given array
int [] avg = new int [N];
int val, av;
for ( int i = 0 ; i < N; i++) {
// first occurrence of a[i]
if (!map.containsKey(a[i])) {
map.put(a[i], 1 );
}
// element has already occurred before
// so increase its count
else {
// gives current count of a[i]
val = map.get(a[i]);
val++;
map.remove(a[i]);
map.put(a[i], val);
}
}
for ( int i = 0 ; i < N; i++) {
av = (a[i] + x) / 2 ;
if (map.containsKey(av)) {
val = map.get(av);
avg[i] = val;
}
}
// Printing the average count array
for ( int i = 0 ; i < N; i++) {
System.out.print(avg[i] + " " );
}
}
// Driver code
public static void main(String args[])
{
int [] a = { 2 , 0 , 4 , 6 , 2 };
int x = 2 ;
int N = a.length;
getAverageCountArray(a, x, N);
}
} |
# Python3 program to find the count of # occurrences of the average of array # elements with a given number # Function to find the count of # occurrences of the average of array # elements with a given number def getAverageCountArray(a, x, N):
# Dictionary to store count of occurrence
# of every array element in the array
map = {}
# Array that stores the average
# count for given array
avg = [ 0 ] * N
for i in range (N):
# first occurrence of a[i]
if a[i] not in map :
map [a[i]] = 1
# element has already occurred before
# so increase its count
else :
# gives current count of a[i]
map [a[i]] + = 1
for i in range (N):
av = (a[i] + x) / / 2
if av in map :
val = map [av]
avg[i] = val
# Printing the average count array
for i in range (N):
print (avg[i], end = " " )
if __name__ = = "__main__" :
a = [ 2 , 0 , 4 , 6 , 2 ]
x = 2
N = len (a)
getAverageCountArray(a, x, N)
# This code is contributed by Rituraj Jain |
// C# program to find the count of // occurrences of the average of array // elements with a given number using System;
using System.Collections.Generic;
class GFG
{ // Function to find the count of // occurrences of the average of array // elements with a given number static void getAverageCountArray( int [] a, int x,
int N)
{ // Map to store count of occurrence
// of every array element in the array
Dictionary< int ,
int > map = new Dictionary< int ,
int >();
// Array that stores the average
// count for given array
int [] avg = new int [N];
int val, av;
for ( int i = 0; i < N; i++)
{
// first occurrence of a[i]
if (!map.ContainsKey(a[i]))
{
map.Add(a[i], 1);
}
// element has already occurred before
// so increase its count
else
{
// gives current count of a[i]
val = map[a[i]];
val++;
map.Remove(a[i]);
map.Add(a[i], val);
}
}
for ( int i = 0; i < N; i++)
{
av = (a[i] + x) / 2;
if (map.ContainsKey(av))
{
val = map[av];
avg[i] = val;
}
}
// Printing the average count array
for ( int i = 0; i < N; i++)
{
Console.Write(avg[i] + " " );
}
} // Driver code public static void Main()
{ int [] a = { 2, 0, 4, 6, 2 };
int x = 2;
int N = a.Length;
getAverageCountArray(a, x, N);
} } // This code is contributed by 29AjayKumar |
<script> // JavaScript program to find the count of // occurrences of the average of array // elements with a given number // Function to find the count of
// occurrences of the average of array
// elements with a given number
function getAverageCountArray(a, x, N)
{
// Map to store count of occurrence
// of every array element in the array
let map = new Map();
// Array that stores the average
// count for given array
let avg = Array.from({length: N}, (_, i) => 0);
let val, av;
for (let i = 0; i < N; i++) {
// first occurrence of a[i]
if (!map.has(a[i])) {
map.set(a[i], 1);
}
// element has already occurred before
// so increase its count
else {
// gives current count of a[i]
val = map.get(a[i]);
val++;
map. delete (a[i]);
map.set(a[i], val);
}
}
for (let i = 0; i < N; i++) {
av = (a[i] + x) / 2;
if (map.has(av)) {
val = map.get(av);
avg[i] = val;
}
}
// Printing the average count array
for (let i = 0; i < N; i++) {
document.write(avg[i] + " " );
}
}
// Driver Code let a = [ 2, 0, 4, 6, 2 ];
let x = 2;
let N = a.length;
getAverageCountArray(a, x, N);
</script> |
Output
2 0 0 1 2
Time Complexity: O(n log n), where n is the size of the given array.
Auxiliary Space: O(n)