GFG App
Open App
Browser
Continue

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

My Personal Notes arrow_drop_up