Técnicas de medición de frecuencia para programación competitiva

Medir la frecuencia de los elementos en una array es una habilidad realmente útil y requiere muchos problemas de codificación competitivos. Nosotros, en muchos problemas, estamos obligados a medir la frecuencia de varios elementos como números, alfabetos, símbolos, etc. como parte de nuestro problema.

método ingenuo

Ejemplos:  

Input :  arr[] = {10, 20, 20, 10, 10, 20, 5, 20}
Output : 10 3
         20 4
         5  1

Input : arr[] = {10, 20, 20}
Output : 10 2
         20 1

Ejecutamos dos bucles. Para cada artículo, cuente el número de veces que ocurre. Para evitar la impresión duplicada, realice un seguimiento de los artículos procesados. 

C++

// C++ program to count frequencies of array items
#include <bits/stdc++.h>
using namespace std;
  
void countFreq(int arr[], int n)
{
    // Mark all array elements as not visited
    vector<int> visited(n, false);
  
    // Traverse through array elements and
    // count frequencies
    for (int i = 0; i < n; i++) {
  
        // Skip this element if already processed
        if (visited[i] == true)
            continue;
  
        // Count frequency
        int count = 1;
        for (int j = i + 1; j < n; j++) {
            if (arr[i] == arr[j]) {
                visited[j] = true;
                count++;
            }
        }
        cout << arr[i] << " " << count << endl;
    }
}
  
int main()
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = sizeof(arr) / sizeof(arr[0]);
    countFreq(arr, n);
    return 0;
}

Java

// Java program to count frequencies
// of array items
import java.util.*;
 
class GFG
{
static void countFreq(int arr[], int n)
{
    // Mark all array elements as not visited
    boolean []visited = new boolean[n];
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0; i < n; i++)
    {
 
        // Skip this element if already processed
        if (visited[i] == true)
            continue;
 
        // Count frequency
        int count = 1;
        for (int j = i + 1; j < n; j++)
        {
            if (arr[i] == arr[j])
            {
                visited[j] = true;
                count++;
            }
        }
        System.out.println(arr[i] + " " + count);
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = arr.length;
    countFreq(arr, n);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python program to count frequencies
# of array items
def countFreq(arr, n):
     
    # mark all array elements as not visited
    visited = [False for i in range(n)]
     
    # Traverse through array elements
    # and count frequencies
    for i in range(n):
         
        # Skip this element if already processed
        if visited[i] == True:
            continue
             
        # count frequency
        count = 1
         
        for j in range(i + 1, n):
            if arr[i] == arr[j]:
                visited[j] = True
                count += 1
        print(arr[i], count)
     
# Driver code
a = [10, 20, 20, 10, 10, 20, 5, 20]
 
n = len(a)
 
countFreq(a, n)
 
# This code is contributed
# by Mohit kumar 29

C#

// C# program to count frequencies
// of array items
using System;
     
class GFG
{
static void countFreq(int []arr, int n)
{
    // Mark all array elements as not visited
    Boolean []visited = new Boolean[n];
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0; i < n; i++)
    {
 
        // Skip this element if already processed
        if (visited[i] == true)
            continue;
 
        // Count frequency
        int count = 1;
        for (int j = i + 1; j < n; j++)
        {
            if (arr[i] == arr[j])
            {
                visited[j] = true;
                count++;
            }
        }
        Console.WriteLine(arr[i] + " " + count);
    }
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = { 10, 20, 20, 10,
                  10, 20, 5, 20 };
    int n = arr.Length;
    countFreq(arr, n);
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
    // Javascript program to count frequencies of array items
     
    function countFreq(arr, n)
    {
        // Mark all array elements as not visited
        let visited = new Array(n);
        visited.fill(false);
 
        // Traverse through array elements and
        // count frequencies
        for (let i = 0; i < n; i++) {
 
            // Skip this element if already processed
            if (visited[i] == true)
                continue;
 
            // Count frequency
            let count = 1;
            for (let j = i + 1; j < n; j++) {
                if (arr[i] == arr[j]) {
                    visited[j] = true;
                    count++;
                }
            }
            document.write(arr[i] + " " + count + "</br>");
        }
    }
 
    let arr = [ 10, 20, 20, 10, 10, 20, 5, 20 ];
    let n = arr.length;
    countFreq(arr, n);
     
    // This code is contributed by mukesh07.
</script>
Producción: 

10 3
20 4
5 1

 

Métodos optimizados:

Medir frecuencias cuando los elementos están limitados por valor 
Si nuestra array de entrada tiene valores pequeños, podemos usar los elementos de la array como índice en una array de conteo e incrementar el conteo. En el siguiente ejemplo, los elementos son un máximo de 10. 

Input :  arr[] = {5, 5, 6, 6, 5, 6, 1, 2, 3, 10, 10}
         limit = 10
Output : 1 1
         2 1
         3 1
         5 3
         6 3
         10 2

C++

// C++ program to count frequencies of array items
// having small values.
#include <bits/stdc++.h>
using namespace std;
  
void countFreq(int arr[], int n, int limit)
{
    // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    vector<int> count(limit+1, 0);
  
    // Traverse through array elements and
    // count frequencies (assuming that elements
    // are limited by limit)
    for (int i = 0; i < n; i++)
        count[arr[i]]++;
  
    for (int i = 0; i <= limit; i++)
       if (count[i] > 0)
        cout << i << " " << count[i] << endl;
     
}
  
int main()
{
    int arr[] = {5, 5, 6, 6, 5, 6, 1, 2, 3, 10, 10};
    int n = sizeof(arr) / sizeof(arr[0]);
    int limit = 10;
    countFreq(arr, n, limit);
    return 0;
}

Java

// Java program to count frequencies of array items
// having small values.
class GFG
{
     
static void countFreq(int arr[], int n, int limit)
{
    // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    int []count = new int[limit + 1];
 
    // Traverse through array elements and
    // count frequencies (assuming that elements
    // are limited by limit)
    for (int i = 0; i < n; i++)
        count[arr[i]]++;
 
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
            System.out.println(i + " " + count[i]);
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = {5, 5, 6, 6, 5, 6, 1, 2, 3, 10, 10};
    int n = arr.length;
    int limit = 10;
    countFreq(arr, n, limit);
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 program to count frequencies of
# array items having small values.
def countFreq(arr, n, limit):
     
    # Create an array to store counts.
    # The size of array is limit+1 and
    # all values are initially 0
    count = [0 for i in range(limit + 1)]
 
    # Traverse through array elements and
    # count frequencies (assuming that
    # elements are limited by limit)
    for i in range(n):
        count[arr[i]] += 1
 
    for i in range(limit + 1):
        if (count[i] > 0):
            print(i, count[i])
 
# Driver Code
arr = [ 5, 5, 6, 6, 5, 6,
        1, 2, 3, 10, 10 ]
n = len(arr)
limit = 10
 
countFreq(arr, n, limit)
 
# This code is contributed by avanitrachhadiya2155

C#

// C# program to count frequencies of
// array items having small values.
using System;
     
class GFG
{
     
static void countFreq(int []arr,
                      int n, int limit)
{
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    int []count = new int[limit + 1];
 
    // Traverse through array elements and
    // count frequencies (assuming that
    // elements are limited by limit)
    for (int i = 0; i < n; i++)
        count[arr[i]]++;
 
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
            Console.WriteLine(i + " " +
                              count[i]);
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = {5, 5, 6, 6, 5, 6,
                 1, 2, 3, 10, 10};
    int n = arr.Length;
    int limit = 10;
    countFreq(arr, n, limit);
}
}
 
// This code is contributed
// by Princi Singh

Javascript

<script>
 
// Javascript program to count frequencies
// of array items having small values.
function countFreq(arr, n, limit)
{
     
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    let count = new Array(limit + 1);
    count.fill(0);
 
    // Traverse through array elements and
    // count frequencies (assuming that
    // elements are limited by limit)
    for(let i = 0; i < n; i++)
        count[arr[i]]++;
 
    for(let i = 0; i <= limit; i++)
        if (count[i] > 0)
            document.write(i + " " +
                           count[i] + "</br>");
}
 
// Driver code
let arr = [ 5, 5, 6, 6, 5, 6,
            1, 2, 3, 10, 10 ];
let n = arr.length;
let limit = 10;
 
countFreq(arr, n, limit);
 
// This code is contributed by rameshtravel07  
 
</script>
Producción: 

1 1
2 1
3 1
5 3
6 3
10 2

 

C++

// C++ program to count frequencies of array items
#include <bits/stdc++.h>
using namespace std;
 
const int limit = 255;
 
void countFreq(string str)
{
    // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    vector<int> count(limit+1, 0);
  
    // Traverse through string characters and
    // count frequencies
    for (int i = 0; i < str.length(); i++)
        count[str[i]]++;
  
    for (int i = 0; i <= limit; i++)
       if (count[i] > 0)
        cout << (char)i << " " << count[i] << endl;
     
}
  
int main()
{
    string str = "GeeksforGeeks";
    countFreq(str);
    return 0;
}

Java

// Java program to count frequencies of array items
class GFG
{
static int limit = 255;
 
static void countFreq(String str)
{
    // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    int []count= new int[limit + 1];
 
    // Traverse through string characters and
    // count frequencies
    for (int i = 0; i < str.length(); i++)
        count[str.charAt(i)]++;
 
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
        System.out.println((char)i + " " + count[i]);
}
 
// Driver Code
public static void main(String[] args)
{
    String str = "GeeksforGeeks";
    countFreq(str);
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 program to count frequencies of array items
limit = 255
def countFreq(Str) :
 
    # Create an array to store counts. The size
    # of array is limit+1 and all values are
    # initially 0
    count = [0] * (limit + 1)
   
    # Traverse through string characters and
    # count frequencies
    for i in range(len(Str)) :
        count[ord(Str[i])] += 1
   
    for i in range(limit + 1) :
       if (count[i] > 0) :
        print(chr(i), count[i])
  
Str = "GeeksforGeeks"
countFreq(Str)
 
# This code is contributed by divyeshrabadiya07

C#

// C# program to count frequencies
// of array items
using System;
     
class GFG
{
static int limit = 25;
 
static void countFreq(String str)
{
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    int []count = new int[limit + 1];
 
    // Traverse through string characters
    // and count frequencies
    for (int i = 0; i < str.Length; i++)
        count[str[i] - 'A']++;
 
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
        Console.WriteLine((char)(i + 'A') +
                          " " + count[i]);
}
 
// Driver Code
public static void Main(String[] args)
{
    String str = "GEEKSFORGEEKS";
    countFreq(str);
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
 
// Javascript program to count frequencies of array items
     
    let limit = 255;
     
function countFreq(str)
{
        // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    let count= new Array(limit + 1);
    for(let i=0;i<count.length;i++)
    {
        count[i]=0;
    }
  
    // Traverse through string characters and
    // count frequencies
    for (let i = 0; i < str.length; i++)
        count[str[i].charCodeAt(0)]++;
  
    for (let i = 0; i <= limit; i++)
    {    if (count[i] > 0)
            document.write(String.fromCharCode(i) + " " + count[i]+"<br>");
    }
}
 
// Driver Code
let str = "GeeksforGeeks";
countFreq(str);
     
     
    // This code is contributed by unknown2108
</script>
Producción: 

G 2
e 4
f 1
k 2
o 1
r 1
s 2

 

Medición de frecuencias cuando los elementos están en un rango limitado 
Por ejemplo, considere una string que contiene solo letras mayúsculas. Los elementos de la string están limitados en el rango de ‘A’ a ‘Z’. La idea es restar el elemento más pequeño (‘A’ en este ejemplo) para obtener el índice del elemento. 

C++

// C++ program to count frequencies of array items
#include <bits/stdc++.h>
using namespace std;
 
const int limit = 25;
 
void countFreq(string str)
{
    // Create an array to store counts. The size
    // of array is limit+1 and all values are
    // initially 0
    vector<int> count(limit+1, 0);
  
    // Traverse through string characters and
    // count frequencies
    for (int i = 0; i < str.length(); i++)
        count[str[i] - 'A']++;
  
    for (int i = 0; i <= limit; i++)
       if (count[i] > 0)
        cout << (char)(i + 'A') << " " << count[i] << endl;
     
}
  
int main()
{
    string str = "GEEKSFORGEEKS";
    countFreq(str);
    return 0;
}

Java

// Java program to count frequencies
// of array items
import java.util.*;
 
class GFG
{
static int limit = 25;
 
static void countFreq(String str)
{
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    int []count = new int[limit + 1];
 
    // Traverse through string characters
    // and count frequencies
    for (int i = 0; i < str.length(); i++)
        count[str.charAt(i) - 'A']++;
 
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
        System.out.println((char)(i + 'A') +
                           " " + count[i]);
}
 
// Driver Code
public static void main(String[] args)
{
    String str = "GEEKSFORGEEKS";
    countFreq(str);
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 program to count frequencies of array items
limit = 25;
def countFreq(str):
     
    # Create an array to store counts. The size
    # of array is limit+1 and all values are
    # initially 0
    count = [0 for i in range(limit + 1)]
   
    # Traverse through string characters and
    # count frequencies
    for i in range(len(str)):  
        count[ord(str[i]) - ord('A')] += 1
   
    for i in range(limit + 1):
       if (count[i] > 0):
           print(chr(i + ord('A')), count[i])
 
# Driver code
if __name__=='__main__':
     
    str = "GEEKSFORGEEKS";
    countFreq(str);
     
# This code is contributed by Pratham76

C#

// C# program to count frequencies
// of array items
using System;
     
class GFG
{
static int limit = 25;
  
static void countFreq(String str)
{
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    int []count = new int[limit + 1];
  
    // Traverse through string characters
    // and count frequencies
    for (int i = 0; i < str.Length; i++)
        count[str[i] - 'A']++;
  
    for (int i = 0; i <= limit; i++)
    if (count[i] > 0)
        Console.WriteLine((char)(i + 'A') +
                           " " + count[i]);
}
  
// Driver Code
public static void Main(String[] args)
{
    String str = "GEEKSFORGEEKS";
    countFreq(str);
}
}
  
// This code contributed by PrinciRaj1992

Javascript

<script>
 
// JavaScript program to count frequencies
// of array items
 
let limit = 25;
function countFreq(str)
{
    // Create an array to store counts.
    // The size of array is limit+1 and
    // all values are initially 0
    let count = new Array(limit + 1);
    for(let i=0;i<limit+1;i++)
    {
        count[i]=0;
    }
  
    // Traverse through string characters
    // and count frequencies
    for (let i = 0; i < str.length; i++)
        count[str[i].charCodeAt(0) - 'A'.charCodeAt(0)]++;
  
    for (let i = 0; i <= limit; i++)
    if (count[i] > 0)
        document.write(String.fromCharCode(i + 'A'.charCodeAt(0)) +
                           " " + count[i]+"<br>");
}
 
// Driver Code
let str = "GEEKSFORGEEKS";
countFreq(str);
 
// This code is contributed by rag2127
 
</script>
Producción: 

E 4
F 1
G 2
K 2
O 1
R 1
S 2

 

Midiendo frecuencias si no hay rango ni límite 
La idea es usar hash ( unordered_map en C++ y HashMap en Java) para obtener frecuencias. 

C++

// C++ program to count frequencies of array items
#include <bits/stdc++.h>
using namespace std;
 
void countFreq(int arr[], int n)
{
    unordered_map<int, int> mp;
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0; i < n; i++)
        mp[arr[i]]++;
 
    // Traverse through map and print frequencies
    for (auto x : mp)
        cout << x.first << " " << x.second << endl;
}
 
int main()
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = sizeof(arr) / sizeof(arr[0]);
    countFreq(arr, n);
    return 0;
}

Java

// Java program to count frequencies of array items
import java.util.*;
class GFG
{
static void countFreq(int arr[], int n)
{
    HashMap<Integer,
            Integer>mp = new HashMap<Integer,
                                     Integer>();
                                      
    // Traverse through array elements and
    // count frequencies
    for (int i = 0 ; i < n; i++)
    {
        if(mp.containsKey(arr[i]))
        {
            mp.put(arr[i], mp.get(arr[i]) + 1);
        }
        else
        {
            mp.put(arr[i], 1);
        }
    }
     
    // Traverse through map and print frequencies
    for (Map.Entry<Integer,
                   Integer> entry : mp.entrySet())
        System.out.println(entry.getKey() + " " +
                           entry.getValue());
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = arr.length;
    countFreq(arr, n);   
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program to count frequencies of array items
def countFreq(arr, n):
 
    mp = {}
  
    # Traverse through array elements and
    # count frequencies
    for i in range(n):
        if arr[i] in mp:
            mp[arr[i]] += 1
        else:
            mp[arr[i]] = 1
  
    # Traverse through map and print frequencies
    for x in sorted(mp):
        print(x, mp[x])
 
# Driver Code
arr = [ 10, 20, 20, 10, 10, 20, 5, 20 ]
n = len(arr)
 
countFreq(arr, n)
 
# This code is contributed by divyesh072019

C#

// C# program to count frequencies of array items
using System;
using System.Collections.Generic;
 
class GFG
{
static void countFreq(int []arr, int n)
{
    Dictionary<int,
               int> mp = new Dictionary<int,
                                        int>();
                                     
    // Traverse through array elements and
    // count frequencies
    for (int i = 0 ; i < n; i++)
    {
        if(mp.ContainsKey(arr[i]))
        {
            var val = mp[arr[i]];
            mp.Remove(arr[i]);
            mp.Add(arr[i], val + 1);
        }
        else
        {
            mp.Add(arr[i], 1);
        }
    }
     
    // Traverse through map and print frequencies
    foreach(KeyValuePair<int, int> entry in mp)
        Console.WriteLine(entry.Key + " " +
                          entry.Value);
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = { 10, 20, 20, 10,
                  10, 20, 5, 20 };
    int n = arr.Length;
    countFreq(arr, n);
}
}
 
// This code is contributed by Princi Singh

Javascript

<script>
// Javascript program to count frequencies of array items
function  countFreq(arr, n)
{
    let mp = new Map();
                                       
    // Traverse through array elements and
    // count frequencies
    for (let i = 0 ; i < n; i++)
    {
        if(mp.has(arr[i]))
        {
            mp.set(arr[i], mp.get(arr[i]) + 1);
        }
        else
        {
            mp.set(arr[i], 1);
        }
    }
      
    // Traverse through map and print frequencies
    for (let [key, value] of mp.entries())
        document.write(key + " " +
                           value+"<br>");
}
 
// Driver Code
let arr=[10, 20, 20, 10, 10, 20, 5, 20];
let n = arr.length;
countFreq(arr, n);  
 
// This code is contributed by ab2127
</script>
Producción: 

5 1
10 3
20 4

 

Tiempo Complejidad : O(n) 
Espacio Auxiliar : O(n)

En la solución eficiente anterior, ¿cómo imprimir elementos en el mismo orden en que aparecen en la entrada?  

C++

// C++ program to count frequencies of array items
#include <bits/stdc++.h>
using namespace std;
 
void countFreq(int arr[], int n)
{
    unordered_map<int, int> mp;
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0; i < n; i++)
        mp[arr[i]]++;
 
    // To print elements according to first
    // occurrence, traverse array one more time
    // print frequencies of elements and mark
    // frequencies as -1 so that same element
    // is not printed multiple times.
    for (int i = 0; i < n; i++) {
      if (mp[arr[i]] != -1)
      {
          cout << arr[i] << " " << mp[arr[i]] << endl;
          mp[arr[i]] = -1;
      }
    }
}
 
int main()
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = sizeof(arr) / sizeof(arr[0]);
    countFreq(arr, n);
    return 0;
}

Java

// Java program to count frequencies of array items
import java.util.*;
 
class GFG
{
static void countFreq(int arr[], int n)
{
    HashMap<Integer,
            Integer> mp = new HashMap<Integer,
                                      Integer>();
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0 ; i < n; i++)
    {
        if(mp.containsKey(arr[i]))
        {
            mp.put(arr[i], mp.get(arr[i]) + 1);
        }
        else
        {
            mp.put(arr[i], 1);
        }
    }
     
    // To print elements according to first
    // occurrence, traverse array one more time
    // print frequencies of elements and mark
    // frequencies as -1 so that same element
    // is not printed multiple times.
    for (int i = 0; i < n; i++)
    {
        if (mp.get(arr[i]) != -1)
        {
            System.out.println(arr[i] + " " +
                               mp.get(arr[i]));
            mp. put(arr[i], -1);
        }
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int arr[] = { 10, 20, 20, 10, 10, 20, 5, 20 };
    int n = arr.length;
    countFreq(arr, n);
}
}
 
// This code is contributed by Princi Singh

Python3

# Python3 program to count frequencies of array items
def countFreq(arr, n):
    mp = {}
     
    # Traverse through array elements and
    # count frequencies
    for i in range(n):
        if arr[i] not in mp:
            mp[arr[i]] = 1
        else:
            mp[arr[i]] += 1
 
    # To print elements according to first
    # occurrence, traverse array one more time
    # print frequencies of elements and mark
    # frequencies as -1 so that same element
    # is not printed multiple times.
    for i in range(n):
        if(mp[arr[i]] != -1):
            print(arr[i], mp[arr[i]])
            mp[arr[i]] = -1
 
# Driver code
arr = [10, 20, 20, 10, 10, 20, 5, 20 ]
n = len(arr)
countFreq(arr, n)
 
# This code is contributed by rag2127

C#

// C# program to count frequencies of array items
using System;
using System.Collections.Generic;
     
class GFG
{
static void countFreq(int []arr, int n)
{
    Dictionary<int,
               int> mp = new Dictionary<int,
                                        int>();
 
    // Traverse through array elements and
    // count frequencies
    for (int i = 0 ; i < n; i++)
    {
        if(mp.ContainsKey(arr[i]))
        {
            mp[arr[i]] = mp[arr[i]] + 1;
        }
        else
        {
            mp.Add(arr[i], 1);
        }
    }
     
    // To print elements according to first
    // occurrence, traverse array one more time
    // print frequencies of elements and mark
    // frequencies as -1 so that same element
    // is not printed multiple times.
    for (int i = 0; i < n; i++)
    {
        if (mp[arr[i]] != -1)
        {
            Console.WriteLine(arr[i] + " " +
                              mp[arr[i]]);
            mp[arr[i]] = - 1;
        }
    }
}
 
// Driver Code
public static void Main(String[] args)
{
    int []arr = { 10, 20, 20, 10,
                  10, 20, 5, 20 };
    int n = arr.Length;
    countFreq(arr, n);
}
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
 
// Javascript program to count
// frequencies of array items
function countFreq(arr, n)
{
    let mp = new Map();
  
    // Traverse through array elements and
    // count frequencies
    for(let i = 0 ; i < n; i++)
    {
        if (mp.has(arr[i]))
        {
            mp.set(arr[i], mp.get(arr[i]) + 1);
        }
        else
        {
            mp.set(arr[i], 1);
        }
    }
      
    // To print elements according to first
    // occurrence, traverse array one more time
    // print frequencies of elements and mark
    // frequencies as -1 so that same element
    // is not printed multiple times.
    for(let i = 0; i < n; i++)
    {
        if (mp.get(arr[i]) != -1)
        {
            document.write(arr[i] + " " +
                    mp.get(arr[i]) + "<br>");
            mp.set(arr[i], -1);
        }
    }
}
 
// Driver Code
let arr = [ 10, 20, 20, 10, 10, 20, 5, 20 ];
let n = arr.length;   
 
countFreq(arr, n);
 
// This code is contributed by patel2127
 
</script>
Producción: 

10 3
20 4
5 1

 

Tiempo Complejidad : O(n) 
Espacio Auxiliar : O(n)

En Java, podemos obtener elementos en el mismo orden usando LinkedHashMap . Por lo tanto, no necesitamos un bucle adicional.
Muchos problemas se basan en la medición de la frecuencia y serán pan comido si sabemos cómo calcular la frecuencia de varios elementos en una array determinada. Por ejemplo, intente los siguientes problemas que se basan en la medición de frecuencia: 

  1. Anagramas
  2. Clasificación de elementos de una array por frecuencia
  3. Un solo numero

Este artículo es una contribución de Aditya Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *