Count of elements of an array present in every row of NxM matrix
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> |
row1 = 3 row2 = 1 row3 = 1 row4 = 0
Time Complexity: O(N*M)
Please Login to comment...