각 행이 정렬된 행렬이 있다고 가정합니다. 각 행에서 공통 요소를 찾는 함수를 작성해야 합니다. 행렬이 아래와 같다고 가정 -

결과는 5입니다.
이를 해결하기 위해 해시 기반 접근 방식을 사용합니다. 이 접근 방식은 행이 정렬되지 않은 경우에도 사용할 수 있습니다. 이렇게 하려면 몇 가지 단계를 따라야 합니다 -
2개의 1의 고유한 요소로 모든 키를 사용하여 하나의 해시 테이블을 생성합니다. 모든 값은 0이 됩니다.
행렬의 각 요소를 순환하면서 해시 테이블에 숫자가 있으면 개수를 1만큼 늘립니다. 마지막으로 개수가 행렬의 행 번호와 같은 값이 있는지 확인합니다. 그렇다면 각 행에 존재합니다. (한 값이 한 행에서 반복되지 않는다고 가정)
예시
#include<iostream>
#include<unordered_map>
#define M 4
#define N 5
using namespace std;
int getCommonElement(int matrix[M][N]) {
unordered_map<int, int> count;
int i, j;
for (i = 0; i < M; i++) {
count[matrix[i][0]]++;
for (j = 1; j < N; j++) {
if (matrix[i][j] != matrix[i][j - 1])
count[matrix[i][j]]++;
}
}
for (auto ele : count) {
if (ele.second == M)
return ele.first;
}
return -1;
}
int main() {
int matrix[M][N] = {
{ 1, 2, 3, 4, 5 },
{ 2, 4, 5, 8, 10 },
{ 3, 5, 7, 9, 11 },
{ 1, 3, 5, 7, 9 },
};
int result = getCommonElement(matrix);
if (result == -1)
cout << "No common element has found";
else
cout << "Common element is " << result;
} 출력
Common element is 5