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

26 May, 2021
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++
Java
Python3
C#
Javascript
// 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 matrixvoid 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 Codeint 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 program to print the count of// elements present in the NxM matriximport java.util.*; class GFG{ // Function to print the count of// elements present in the NxM matrixstatic 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 Codepublic 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 program to print the count of# elements present in the NxM matrix # Function to print the count of# elements present in the NxM matrixdef 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 matrixa = [[ 8, 27, 39, 589, 23 ],     [ 23, 34, 589, 12, 45 ],     [ 939, 32, 27, 12, 78 ],     [ 23, 349, 48, 21, 32 ]] # elements arrayarr = [ 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# program to print the count of// elements present in the NxM matrixusing System;using System.Collections.Generic; class GFG{ // Function to print the count of// elements present in the NxM matrixstatic 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 Codepublic 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 */
<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>
row1 = 3
row2 = 1
row3 = 1
row4 = 0
 
Time Complexity: O(N*M) 
mohit kumar 29
29AjayKumar
princiraj1992
Akanksha_Rai
patel2127
Algorithms-Searching
Arrays
cpp-unordered_map
Hash
Matrix
Arrays
Hash
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Divide and Conquer | Set 5 (Strassen's Matrix Multiplication)
Sudoku | Backtracking-7
Program to multiply two matrices
Inplace rotate square matrix by 90 degrees | Set 1
Min Cost Path | DP-6
The Celebrity Problem
Count all possible paths from top left to bottom right of a mXn matrix
Python program to multiply two matrices
Rotate a matrix by 90 degree in clockwise direction without using any extra space
Printing all solutions in N-Queen Problem