Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Count of elements of an array present in every row of NxM matrix

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given N rows with M elements each and an array arr[] of L numbers, the task is to print the count of elements of that array present in every row of the matrix. 

Examples: 

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

A naive approach is to iterate for every element in the array arr[] and for ith row do a linear search for every element in the array arr[]. Count the number of elements and print the result for every row. 
Time Complexity: O(N*M*L)

An efficient approach is to iterate for all the elements in the ith row of the matrix. Mark all elements using a hash table. Iterate in the array of numbers in the Z array, check if the number is present in the hash-table. Increase the count for every element present. Once all the elements are checked, print the count. 

Below is the implementation of the above approach: 

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>


Output

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

Time Complexity: O(N*M)


My Personal Notes arrow_drop_up
Last Updated : 26 Aug, 2022
Like Article
Save Article
Similar Reads
Related Tutorials