สมมติว่าเรามีเมทริกซ์ที่จัดเรียงแต่ละแถว เราต้องเขียนฟังก์ชันที่จะหาองค์ประกอบทั่วไปในแต่ละแถว สมมติว่าเมทริกซ์อยู่ด้านล่าง -
ผลลัพธ์จะเป็น 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