Modo en una secuencia de enteros (enteros en ejecución)

Dado que los enteros se leen de un flujo de datos. Encuentre la moda de todos los elementos leídos hasta el momento desde el primer entero hasta el último entero.

La moda se define como el elemento que ocurre el tiempo máximo. Si dos o más elementos tienen la misma frecuencia máxima, entonces tome el que tenga la última ocurrencia. 

Ejemplos:

Entrada: corriente[] = {2, 7, 3, 2, 5}
Salida: 2 7 3 2 2 
Explicación: 
El modo de corriente en ejecución se calcula de la siguiente manera: 
Modo({2}) = 2 
Modo({2, 7} ) = 7 
Modo({2, 7, 3}) = 3 
Modo({2, 7, 3, 2}) = 2 
Modo({2, 7, 3, 2, 2}) = 2

Entrada: stream[] = {3, 5, 9, 9, 2, 3, 3, 4}
Salida: 3 5 9 9 9 3 3 3

Enfoque : La idea es usar un Hash-map para mapear elementos a su frecuencia . Mientras lee los elementos uno por uno, actualice las frecuencias de los elementos en el mapa y también actualice el modo, que será el modo del flujo de los números enteros en ejecución.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to implement
// the above approach
#include<bits/stdc++.h>
using namespace std;
  
// Function that prints
// the Mode values
void findMode(int a[], int n)
{
      
    // Map used to mp integers
    // to its frequency
    map<int, int> mp; 
  
    // To store the maximum frequency
    int max = 0;
  
    // To store the element with
    // the maximum frequency
    int mode = 0;
      
    // Loop used to read the
    // elements one by one
    for(int i = 0; i < n; i++) 
    {
          
        // Updates the frequency of
        // that element
        mp[a[i]]++;
      
        // Checks for maximum Number
        // of occurrence
        if (mp[a[i]] >= max) 
        {
      
            // Updates the maximum frequency
            max = mp[a[i]];
      
            // Updates the Mode
            mode = a[i];
        }
        cout << mode << " ";
    }
}
      
// Driver Code
int main()
{
    int arr[] = { 2, 7, 3, 2, 5 };
    int n = sizeof(arr)/sizeof(arr[0]);
  
    // Function call
    findMode(arr, n);
  
    return 0;
} 
  
// This code is contributed by rutvik_56

Java

// Java implementation of the
// above approach
  
import java.util.*;
  
public class GFG {
  
    // Function that prints
    // the Mode values
    public static void findMode(int[] a, int n)
    {
        // Map used to map integers
        // to its frequency
        Map<Integer, Integer> map
            = new HashMap<>();
  
        // To store the maximum frequency
        int max = 0;
  
        // To store the element with
        // the maximum frequency
        int mode = 0;
  
        // Loop used to read the
        // elements one by one
        for (int i = 0; i < n; i++) {
  
            // Updates the frequency of
            // that element
            map.put(a[i],
                    map.getOrDefault(a[i], 0) + 1);
  
            // Checks for maximum Number
            // of occurrence
            if (map.get(a[i]) >= max) {
  
                // Updates the maximum frequency
                max = map.get(a[i]);
  
                // Updates the Mode
                mode = a[i];
            }
  
            System.out.print(mode);
            System.out.print(" ");
        }
    }
  
    // Driver Code
    public static void main(String[] args)
    {
        int arr[] = { 2, 7, 3, 2, 5 };
  
        int n = arr.length;
  
        // Function Call
        findMode(arr, n);
    }
}

Python3

# Python3 implementation of the 
# above approach
  
# Function that prints 
# the Mode values 
def findMode(a, n):
      
    # Map used to mp integers 
    # to its frequency 
    mp = {}
      
    # To store the maximum frequency 
    max = 0
      
    # To store the element with 
    # the maximum frequency 
    mode = 0
      
    # Loop used to read the 
    # elements one by one 
    for i in range(n):
        if a[i] in mp:
            mp[a[i]] += 1
        else:
            mp[a[i]] = 1
          
        # Checks for maximum Number 
        # of occurrence     
        if (mp[a[i]] >= max):
              
            # Updates the maximum 
            # frequency 
            max = mp[a[i]]
              
            # Updates the Mode 
            mode = a[i]
              
        print(mode, end = " ")
  
# Driver Code
arr = [ 2, 7, 3, 2, 5 ]
n = len(arr)
  
# Function call 
findMode(arr,n)
  
# This code is contributed by divyeshrabadiya07

C#

// C# implementation of the
// above approach
using System;
using System.Collections.Generic;
class GFG{
  
    // Function that prints
    // the Mode values
    public static void findMode(int[] a, int n)
    {
        // Map used to map integers
        // to its frequency
        Dictionary<int, int> map = new Dictionary<int, int>();
  
        // To store the maximum frequency
        int max = 0;
  
        // To store the element with
        // the maximum frequency
        int mode = 0;
  
        // Loop used to read the
        // elements one by one
        for (int i = 0; i < n; i++) 
        {
          
            // Updates the frequency of
            // that element
            if (map.ContainsKey(a[i])) 
            {
                map[a[i]] = map[a[i]] + 1;
            }
            else
            {
                map.Add(a[i], 1);
            }
  
            // Checks for maximum Number
            // of occurrence
            if (map[a[i]] >= max) 
            {
  
                // Updates the maximum frequency
                max = map[a[i]];
  
                // Updates the Mode
                mode = a[i];
            }
            Console.Write(mode);
            Console.Write(" ");
        }
    }
  
    // Driver Code
    public static void Main(String[] args)
    {
        int[] arr = {2, 7, 3, 2, 5};
        int n = arr.Length;
  
        // Function Call
        findMode(arr, n);
    }
}
  
// This code is contributed by Amit Katiyar
Producción: 

2 7 3 2 2

Análisis de rendimiento: 

  • Complejidad de tiempo: O(N)
  • Espacio Auxiliar: O(N) 

Publicación traducida automáticamente

Artículo escrito por kunalsg18elec 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 *