# 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:

1. Create an empty hash table or dictionary.
2. Traverse through all the elements of the matrix
3. If element is present in the dictionary, then increment its count
4. Otherwise insert element with value = 1.

Implementation:

## C++

 `// C++ program to find unique ` `// element in matrix ` `#include ` `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

 ` `

## Javascript

 ``

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 ` `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 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 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)

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Previous
Next