# Find unique elements in a matrix

Last Updated : 24 Mar, 2023

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



## 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 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 map = new Dictionary();        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 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)

Previous
Next