How to find unique elements in matrix in C++
In this tutorial, we will learn how to find unique elements in a matrix in C++ with an example and algorithm.
The elements which appear only one time in a matrix are unique elements of that matrix.
How to find unique elements in a matrix
let’s take an example to find a unique element in a matrix manually.
Example:
Consider a matrix of od size 3*4
input matrix:
1 2 3
6 5 1
8 3 5
7 8 9
so, there are 3*4 = 12 elements in the - 1,2,3,5,6,7,8,9
in which 1,3,5,8 are repeated elements and 2,6,7 and 9 are not repeated in the
matrix.
Therefore, the unique elements in the array are 2,6,7,9.Algorithm
- Declare and initialize a matrix of m*n. (where m and n are the lengths of row and column of matrix).
- Find the largest number in the matrix.
- declare a temporary array of size equal to largest lumber in the matrix with an increment of 1.
- start an outer loop from i = 0 to m and an inner loop from j = 0 to n inside the outer loop.
- For each element in the matrix increment the value by one at the temporary array by using the element as an index number.
- Traverse the temporary array and search for value 1 in the temporary array. when everyone is the encounter, print the index number.
- if no value in the matrix is one, then no unique element present in the array.
C++ program to find unique elements in a matrix
#include<bits/stdc++.h>
using namespace std;
//function to calculate unique element
int FindUnique(int matrix[50][50], int m, int n)
{
int max = 0, flag = 0;
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
// Find maximum element in
// a matrix
if(max < matrix[i][j])
max = matrix[i][j];
// Take 1-D array of (maximum + 1) size
int temp[max + 1] = {0};
//counting the number of repetation of number available
//by index value as that number
for(int i = 0 ; i < m; i++)
for(int j = 0; j < n; j++)
temp[matrix[i][j]]++;
//print unique element
cout<<"Unique numbers are: ";
for(int i = 1; i <= max; i++)
if(temp[i] == 1)
cout << i << " ";
flag = 1;
if(!flag){
cout << " No unique element in the matrix";
}
}
// Driver program
int main()
{
int matrix[50][50], m, n;
//taking input for the length of row and column.
cout<<"Enter the length of the row: ";
cin>>m;
cout<<"Enther the length of the column: ";
cin>>n;
//input the elements of matrix
cout<<"\nEnter the lements of matrix:\n ";
for(int i = 0;i < m;i++)
for(int j = 0; j < n; j++)
cin>>matrix[i][j];
// function that calculate unique element
FindUnique(matrix, m, n);
return 0;
}Output:
Enter the length of the row: 3 Enther the length of the column: 4 Enter the elements of marix: 1 2 3 6 5 1 8 3 5 7 8 9 Unique numbers are: 2 6 7 9
Time complexity: O(m*n) where m and n is the size of row and column of the matrix.
You may also read:
Leave a Reply