Recuento de elementos de una array presente en cada fila de array NxM

Dadas N filas con M elementos cada una y un arreglo arr[] de L números, la tarea es imprimir el conteo de elementos de ese arreglo presente en cada fila de la array. 
Ejemplos: 
 

Input: {8 27 39 589 23
        23 34 589 12 45
        939 32 27 12 78
        23 349 48 21 32},  
       
       arr[] = {589, 39, 27}

Output: 1st row - 3
        2nd row - 1
        3rd row - 1 
        4th row - 0
In 1st row, all three elements in array z[] are present
In 2nd row, only 589 in array z[] are present
In 3rd row, only 27 in array z[] are present 
In 4th row, none of the elements are present. 

Input: {1, 2, 3
        4, 5, 6}, 
       
       arr[] = {2, 3, 4}

Output: 1st row - 2
        2nd row - 1

Un enfoque ingenuo es iterar para cada elemento en el arreglo arr[] y para la i -ésima fila hacer una búsqueda lineal para cada elemento en el arreglo arr[]. Cuente el número de elementos e imprima el resultado para cada fila. 
Complejidad de tiempo: O(N*M*L)
Un enfoque eficiente es iterar para todos los elementos en la i -ésima fila de la array. Marque todos los elementos usando una tabla hash . Iterar en la array de números en la array Z, verificar si el número está presente en la tabla hash. Aumente el recuento de cada elemento presente. Una vez comprobados todos los elementos, imprima el recuento. 
A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to print the count of
// elements present in the NxM matrix
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the count of
// elements present in the NxM matrix
void printCount(int a[][5], int n, int m, int z[], int l)
{
    // iterate in the n rows
    for (int i = 0; i < n; i++) {
        // map to mark elements in N-th row
        unordered_map<int, int> mp;
 
        // mark all elements in the n-th row
        for (int j = 0; j < m; j++)
            mp[a[i][j]] = 1;
 
        int count = 0;
 
        // check for occurrence of all elements
        for (int j = 0; j < l; j++) {
            if (mp[z[j]])
                count += 1;
        }
 
        // print the occurrence of all elements
        cout << "row" << i + 1 << " = " << count << endl;
    }
}
 
// Driver Code
int main()
{
 
    // NxM matrix
    int a[][5] = { { 8, 27, 39, 589, 23 },
                { 23, 34, 589, 12, 45 },
                { 939, 32, 27, 12, 78 },
                { 23, 349, 48, 21, 32 } };
 
    // elements array
    int arr[] = { 589, 39, 27 };
 
    int n = sizeof(a) / sizeof(a[0]);
 
    int m = 5;
 
    int l = sizeof(arr) / sizeof(arr[0]);
 
    printCount(a, n, m, arr, l);
 
    return 0;
}

Java

// Java program to print the count of
// elements present in the NxM matrix
import java.util.*;
 
class GFG
{
 
// Function to print the count of
// elements present in the NxM matrix
static void printCount(int a[][], int n, int m,
                                int z[], int l)
{
    // iterate in the n rows
    for (int i = 0; i < n; i++)
    {
        // map to mark elements in N-th row
        Map<Integer,Integer> mp = new HashMap<>();
 
        // mark all elements in the n-th row
        for (int j = 0; j < m; j++)
            mp.put(a[i][j], 1);
 
        int count = 0;
 
        // check for occurrence of all elements
        for (int j = 0; j < l; j++)
        {
            if (mp.containsKey(z[j]))
                count += 1;
        }
 
        // print the occurrence of all elements
                System.out.println("row" +(i + 1) + " = " + count);
    }
}
 
// Driver Code
public static void main(String[] args)
{
    // NxM matrix
    int a[][] = { { 8, 27, 39, 589, 23 },
                { 23, 34, 589, 12, 45 },
                { 939, 32, 27, 12, 78 },
                { 23, 349, 48, 21, 32 } };
 
    // elements array
    int arr[] = { 589, 39, 27 };
 
    int n = a.length;
 
    int m = 5;
 
    int l = arr.length;
 
    printCount(a, n, m, arr, l);
    }
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program to print the count of
# elements present in the NxM matrix
 
# Function to print the count of
# elements present in the NxM matrix
def printCount(a, n, m, z, l):
 
    # iterate in the n rows
    for i in range(n):
         
        # map to mark elements in N-th row
        mp = dict()
 
        # mark all elements in the n-th row
        for j in range(m):
            mp[a[i][j]] = 1
 
        count = 0
 
        # check for occurrence of all elements
        for j in range(l):
             
            if z[j] in mp.keys():
                 
                count += 1
         
        # print the occurrence of all elements
        print("row", i + 1, " = ", count )
 
# Driver Code
 
# NxM matrix
a = [[ 8, 27, 39, 589, 23 ],
     [ 23, 34, 589, 12, 45 ],
     [ 939, 32, 27, 12, 78 ],
     [ 23, 349, 48, 21, 32 ]]
 
# elements array
arr = [ 589, 39, 27 ]
 
n = len(a)
 
m = 5
 
l = len(arr)
 
printCount(a, n, m, arr, l)
 
# This code is contributed by mohit kumar 29

C#

// C# program to print the count of
// elements present in the NxM matrix
using System;
using System.Collections.Generic;
 
class GFG
{
 
// Function to print the count of
// elements present in the NxM matrix
static void printCount(int [,]a, int n, int m,
                                int []z, int l)
{
    // iterate in the n rows
    for (int i = 0; i < n; i++)
    {
        // map to mark elements in N-th row
        Dictionary<int,int> mp = new Dictionary<int,int>();
 
        // mark all elements in the n-th row
        for (int j = 0; j < m; j++)
            mp.Add(a[i,j], 1);
 
        int count = 0;
 
        // check for occurrence of all elements
        for (int j = 0; j < l; j++)
        {
            if (mp.ContainsKey(z[j]))
                count += 1;
        }
 
        // print the occurrence of all elements
        Console.WriteLine("row" +(i + 1) + " = " + count);
    }
}
 
// Driver Code
public static void Main(String[] args)
{
    // NxM matrix
    int [,]a = { { 8, 27, 39, 589, 23 },
                { 23, 34, 589, 12, 45 },
                { 939, 32, 27, 12, 78 },
                { 23, 349, 48, 21, 32 } };
 
    // elements array
    int []arr = { 589, 39, 27 };
 
    int n = a.GetLength(0);
 
    int m = 5;
 
    int l = arr.Length;
 
    printCount(a, n, m, arr, l);
}
}
 
/* This code is contributed by PrinciRaj1992 */

Javascript

<script>
 
// JavaScript program to print the count of
// elements present in the NxM matrix
     
    // Function to print the count of
// elements present in the NxM matrix
    function printCount(a,n,m,z,l)
    {
        // iterate in the n rows
    for (let i = 0; i < n; i++)
    {
        // map to mark elements in N-th row
        let mp = new Map();
   
        // mark all elements in the n-th row
        for (let j = 0; j < m; j++)
            mp.set(a[i][j], 1);
   
        let count = 0;
   
        // check for occurrence of all elements
        for (let j = 0; j < l; j++)
        {
            if (mp.has(z[j]))
                count += 1;
        }
   
        // print the occurrence of all elements
                document.write("row" +(i + 1) +
                " = " + count+"<br>");
    }
    }
     
    // Driver Code
     
    // NxM matrix
    let a = [[ 8, 27, 39, 589, 23 ],
     [ 23, 34, 589, 12, 45 ],
     [ 939, 32, 27, 12, 78 ],
     [ 23, 349, 48, 21, 32 ]];
      
    // elements array 
    let arr=[ 589, 39, 27];
    let n = a.length;
    let m = 5;
    let l = arr.length;
    printCount(a, n, m, arr, l);
 
     
// This code is contributed by patel2127
 
</script>
Producción: 

row1 = 3
row2 = 1
row3 = 1
row4 = 0

 

Complejidad de tiempo: O(N*M)
 

Publicación traducida automáticamente

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