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)