Open In App

Find unique elements in a matrix

Improve
Improve
Like Article
Like
Save
Share
Report

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



Last Updated : 24 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads