สมมติว่าเรามีเมทริกซ์ที่จัดเรียงแต่ละแถว เราต้องเขียนฟังก์ชันที่จะหาองค์ประกอบทั่วไปในแต่ละแถว สมมติว่าเมทริกซ์อยู่ด้านล่าง -

ผลลัพธ์จะเป็น 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