Find unique elements in a matrix
Given a matrix mat[][] having n rows and m columns. We need to find unique elements in matrix i.e, those elements which are not repeated in the matrix or those elements whose frequency is 1.
Examples:
Input : 20 15 30 2 2 3 5 30 6 7 6 8 Output : 3 20 5 7 8 15 Input : 1 2 3 5 6 2 1 3 5 6 2 2 Output : No unique element in the matrix
Follow these steps to find a unique element:
- Create an empty hash table or dictionary.
- Traverse through all the elements of the matrix
- If element is present in the dictionary, then increment its count
- Otherwise insert element with value = 1.
Implementation:
C++
// C++ program to find unique // element in matrix #include<bits/stdc++.h> using namespace std; #define R 4 #define C 4 // function that calculate unique element int unique( int mat[R][C], int n, int m) { int maximum = 0, flag = 0; for ( int i = 0; i < n; i++) for ( int j = 0; j < m; j++) // Find maximum element in // a matrix if (maximum < mat[i][j]) maximum = mat[i][j]; // Take 1-D array of (maximum + 1) // size int b[maximum + 1] = {0}; for ( int i = 0 ; i < n; i++) for ( int j = 0; j < m; j++) b[(mat[i][j])]++; //print unique element for ( int i = 1; i <= maximum; i++) if (b[i] == 1) cout << i << " " ; flag = 1; if (!flag){ cout << "No unique element in the matrix" ; } } // Driver program int main() { int mat[R][C] = {{ 1, 2, 3, 20}, {5, 6, 20, 25}, {1, 3, 5, 6}, {6, 7, 8, 15}}; // function that calculate unique element unique(mat, R, C); return 0; } // This code is contributed by Naman_Garg. |
Java
// Java program to find unique // element in matrix import java.util.*; class GFG { static int R = 4 , C = 4 ; // function that calculate // unique element static void unique( int mat[][], int n, int m) { int maximum = 0 , flag = 0 ; for ( int i = 0 ; i < n; i++) for ( int j = 0 ; j < m; j++) // Find maximum element // in a matrix if (maximum < mat[i][j]) maximum = mat[i][j]; // Take 1-D array of // (maximum + 1) size int b[] = new int [maximum + 1 ]; for ( int i = 0 ; i < n; i++) for ( int j = 0 ; j < m; j++) b[(mat[i][j])]++; //print unique element for ( int i = 1 ; i <= maximum; i++) if (b[i] == 1 ) System.out.print(i + " " ); flag = 1 ; if (flag == 0 ) { System.out.println( "No unique element " + "in the matrix" ); } } // Driver Code public static void main(String args[]) { int mat[][] = {{ 1 , 2 , 3 , 20 }, { 5 , 6 , 20 , 25 }, { 1 , 3 , 5 , 6 }, { 6 , 7 , 8 , 15 }}; // function that calculate // unique element unique(mat, R, C); } } // This code is contributed // by Arnab Kundu |
Python3
# Python 3 program to find unique # element in matrix def unique(mat, n, m): maximum = 0 ; flag = 0 for i in range ( 0 , n): for j in range ( 0 , m): # Find maximum element in # a matrix if (maximum < mat[i][j]): maximum = mat[i][j]; uniqueElementDict = [ 0 ] * (maximum + 1 ) # loops to traverse through the matrix for i in range ( 0 , n): for j in range ( 0 , m): uniqueElementDict[(mat[i][j])] + = 1 # Print all those keys whose count is 1 for key in range (maximum + 1 ): if uniqueElementDict[key] = = 1 : print (key, end = " " ) flag = 1 if (flag = = 0 ): print ( "No unique element in the matrix" ) # Driver Code mat = [[ 1 , 2 , 3 , 20 ], [ 5 , 6 , 20 , 25 ], [ 1 , 3 , 5 , 6 ], [ 6 , 7 , 8 , 15 ]] n = 4 m = 4 unique(mat, n, m) |
C#
// C# program to find unique // element in matrix using System; class GFG { static int R = 4, C = 4; // function that calculate // unique element static void unique( int [,]mat, int n, int m) { int maximum = 0, flag = 0; for ( int i = 0; i < n; i++) for ( int j = 0; j < m; j++) // Find maximum element // in a matrix if (maximum < mat[i, j]) maximum = mat[i, j]; // Take 1-D array of // (maximum + 1) size int []b = new int [maximum + 1]; for ( int i = 0 ; i < n; i++) for ( int j = 0; j < m; j++) b[(mat[i, j])]++; // print unique element for ( int i = 1; i <= maximum; i++) if (b[i] == 1) Console.Write(i + " " ); flag = 1; if (flag == 0) { Console.WriteLine( "No unique element " + "in the matrix" ); } } // Driver Code public static void Main() { int [,]mat = {{1, 2, 3, 20}, {5, 6, 20, 25}, {1, 3, 5, 6}, {6, 7, 8, 15}}; // function that calculate // unique element unique(mat, R, C); } } // This code is contributed // by Subhadeep |
PHP
<?php // PHP program to find unique // element in matrix $R = 4; $C = 4; // function that calculate unique element function unique( $mat , $n , $m ) { $maximum = 0; $flag = 0; for ( $i = 0; $i < $n ; $i ++) for ( $j = 0; $j < $m ; $j ++) // Find maximum element in // a matrix if ( $maximum < $mat [ $i ][ $j ]) $maximum = $mat [ $i ][ $j ]; // Take 1-D array of (maximum + 1) // size $b = array (); for ( $j = 0; $j < $maximum + 1; $j ++) $b [ $j ] = 0; for ( $i = 0 ; $i < $n ; $i ++) for ( $j = 0; $j < $m ; $j ++) $b [ $mat [ $i ][ $j ]]++; // print unique element for ( $i = 1; $i <= $maximum ; $i ++) if ( $b [ $i ] == 1) echo "$i " ; $flag = 1; if (! $flag ) { echo "No unique element in the matrix" ; } } // Driver Code $mat = array ( array (1, 2, 3, 20), array (5, 6, 20, 25), array (1, 3, 5, 6), array (6, 7, 8, 15)); // function that calculate unique element unique( $mat , $R , $C ); // This code is contributed by iAyushRaj ?> |
Javascript
<script> // Javascript program to find unique // element in matrix var R = 4, C = 4; // Function that calculate // unique element function unique(mat, n, m) { var maximum = 0, flag = 0; for ( var i = 0; i < n; i++) for ( var j = 0; j < m; j++) // Find maximum element // in a matrix if (maximum < mat[i][j]) maximum = mat[i][j]; // Take 1-D array of // (maximum + 1) size var b = Array(maximum+1).fill(0); for ( var i = 0 ; i < n; i++) for ( var j = 0; j < m; j++) b[(mat[i][j])]++; // Print unique element for ( var i = 1; i <= maximum; i++) if (b[i] == 1) document.write(i + " " ); flag = 1; if (flag == 0) { document.write( "No unique element " + "in the matrix<br>" ); } } // Driver Code var mat = [ [ 1, 2, 3, 20 ], [ 5, 6, 20, 25 ], [ 1, 3, 5, 6 ], [ 6, 7, 8, 15 ] ]; // Function that calculate // unique element unique(mat, R, C); // This code is contributed by rrrtnx </script> |
Output
2 7 8 15 25
Complexity Analysis:
- Time Complexity: O(m*n) where m is the number of rows & n is the number of columns.
- Auxiliary Space: O(max(matrix)).
Method – 2: Using HashMap
This approach uses a hashmap instead of creating a hashtable of size max element + 1.
Implementation
C++
// C++ program to find unique element in matrix #include <bits/stdc++.h> using namespace std; #define R 4 #define C 4 // function that calculate unique element int unique( int mat[R][C], int n, int m) { // declare map for hashing unordered_map< int , int > mp; for ( int i = 0; i < n; i++) for ( int j = 0; j < m; j++) // increase freq of mat[i][j] in map mp[(mat[i][j])]++; int flag = false ; // print unique element for ( auto p : mp) { if (p.second == 1) { cout << p.first << " " ; flag = 1; } } if (!flag) { cout << "No unique element in the matrix" ; } } // Driver program int main() { int mat[R][C] = { { 1, 2, 3, 20 }, { 5, 6, 20, 25 }, { 1, 3, 5, 6 }, { 6, 7, 8, 15 } }; // function that calculate unique element unique(mat, R, C); return 0; } |
Java
// Java program to find unique element in matrix import java.util.*; // Main class public class GFG { // function that calculate unique element public static void unique( int mat[][], int R, int C) { // declare map for hashing Map<Integer, Integer> map = new HashMap<>(); for ( int i = 0 ; i < R; i++) { for ( int j = 0 ; j < C; j++) { // increase freq of mat[i][j] in map if (map.containsKey(mat[i][j])) { map.put(mat[i][j], 1 + map.get(mat[i][j])); } else { map.put(mat[i][j], 1 ); } } } int flag = 0 ; // print unique element for (Map.Entry<Integer, Integer> e : map.entrySet()) { if (e.getValue() == 1 ) { // Printing key System.out.print(e.getKey() + " " ); flag = 1 ; } } if (flag == 0 ) { System.out.println( "No unique element in the matrix" ); } } // Driver program public static void main(String[] args) { int R = 4 ; int C = 4 ; int mat[][] = { { 1 , 2 , 3 , 20 }, { 5 , 6 , 20 , 25 }, { 1 , 3 , 5 , 6 }, { 6 , 7 , 8 , 15 } }; // function that calculate unique element unique(mat, R, C); } } // This code is contributed by aadityaburujwale. |
Python3
# Python program to find unique element in matrix # function that calculate unique element def unique(mat, r, c) - > int : # declare map for hashing mp = {} for i in range (r): for j in range (c): # increase freq of mat[i][j] in map if mat[i][j] not in mp: mp[(mat[i][j])] = 1 else : mp[(mat[i][j])] + = 1 flag = False # print unique element for p in mp: if mp[p] = = 1 : print (p, end = " " ) flag = True if flag = = False : print ( "No unique element in the matrix" ) # Driver program if __name__ = = "__main__" : mat = [[ 1 , 2 , 3 , 20 ], [ 5 , 6 , 20 , 25 ], [ 1 , 3 , 5 , 6 ], [ 6 , 7 , 8 , 15 ]] # function that calculate unique element unique(mat, 4 , 4 ) # This code is contributed by ajaymakvana |
C#
// C# program to find unique element in matrix using System; using System.Collections.Generic; public class GFG { // function that calculate unique element public static void unique( int [, ] mat, int R, int C) { // declare map for hashing Dictionary< int , int > map = new Dictionary< int , int >(); for ( int i = 0; i < R; i++) { for ( int j = 0; j < C; j++) { // increase freq of mat[i][j] in map if (map.ContainsKey(mat[i, j])) { map[(mat[i, j])] = 1 + map[(mat[i, j])]; } else { map[(mat[i, j])] = 1; } } } int flag = 0; // print unique element foreach (KeyValuePair< int , int > e in map) { // do something with entry.Value or entry.Key if (e.Value == 1) { // Printing key Console.Write(e.Key + " " ); flag = 1; } } if (flag == 0) { Console.WriteLine( "No unique element in the matrix" ); } } // Driver program public static void Main( string [] args) { int R = 4; int C = 4; int [, ] mat = { { 1, 2, 3, 20 }, { 5, 6, 20, 25 }, { 1, 3, 5, 6 }, { 6, 7, 8, 15 } }; // function that calculate unique element unique(mat, R, C); } } // This code is contributed by ajaymakavana. |
Javascript
// Javascript program to find unique element in matrix var R = 4; var C = 4; // function that calculate unique element function unique(mat, n, m) { // declare map for hashing const mp = new Map(); for ( var i = 0; i < n; i++) { for ( var j = 0; j < m; j++) { // increase freq of mat[i][j] in map if (mp.has(mat[i][j])) { mp.set(mat[i][j], 1 + mp.get(mat[i][j])); } else { mp.set(mat[i][j], 1); } } } var flag = false ; // print unique element for (const [key, value] of mp) { // console.log(`${key} = ${value}`); if (value == 1) { console.log(`${key}`); flag = true ; } } if (!flag) { console.log( "No unique element in the matrix" ); } } // Driver Code var mat = [ [1, 2, 3, 20], [5, 6, 20, 25], [1, 3, 5, 6], [6, 7, 8, 15] ]; // Function that calculate unique element unique(mat, R, C); // This code is contributed by ajaymakvana. |
Output
2 7 8 15 25
Time Complexity: O(R*C)
Auxiliary Space: O(R*C)
Please Login to comment...