Company: Zoho, VMWare, Paytm
Question:
Question:
Given an unsorted array of N integers which can contain integers from 1 to N. Some elements can be repeated multiple times and some other elements can be absent from the array. Count frequency of all elements from 1 to N.
Input:
The first line contains an integer 'T' denoting the total number of test cases. In each test cases, the first line contains an integer 'N' denoting the size of array. The second line contains N space-separated integers A1, A2, ..., AN denoting the elements of the array.
Output:
For each test case output N space-separated integers denoting the frequency of each element from 1 to N.
Constraints:
1 ≤ T ≤ 100
1 ≤ N ≤ 100
Example:
Input:
2
5
2 3 2 3 5
4
3 3 3 3
2
5
2 3 2 3 5
4
3 3 3 3
Output:
0 2 2 0 1
0 0 4 0
0 2 2 0 1
0 0 4 0
CODE:
import java.util.*;
import java.lang.*;
import java.io.*;
class Solution{
public static void printfrequency(int arr[], int n)
{
// Subtract 1 from every element so that the elements
// become in range from 0 to n-1
for (int j = 0; j < n; j++)
arr[j] = arr[j] - 1;
// Use every element arr[i] as index and add 'n' to
// element present at arr[i]%n to keep track of count of
// occurrences of arr[i]
for (int i = 0; i < n; i++)
arr[arr[i] % n] = arr[arr[i] % n] + n;
// To print counts, simply print the number of times n
// was added at index corresponding to every element
for (int i = 0; i < n; i++)
System.out.print( arr[i] / n +" ");
}
// Driver program to test above functions
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
for(int mi=0;mi<m;mi++){
int n = sc.nextInt();
int [] ar= new int[n];
for(int i=0;i<n;i++){
ar[i]=sc.nextInt();
}
printfrequency(ar, n);
System.out.println();
}
}
}
EXECUTION TIME:0.17s
Comments
Post a Comment