查找矩阵中的唯一元素
给定一个矩阵 mat[][] 有 n 行和 m 列。我们需要在矩阵中找到唯一的元素,即那些在矩阵中不重复的元素或那些频率为 1 的元素。
例子:
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
按照以下步骤查找唯一元素:
1. 创建一个空的哈希表或字典。
2.遍历矩阵的所有元素
3. 如果字典中存在元素,则增加其计数
4. 否则插入值为 1 的元素。
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
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
输出
2 7 8 15 25
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。