#include <unordered_map>
#include <iostream>
#include <vector>
int findCommonElementInMatrixRows(const std::vector<std::vector<int>> &matrix) {
int rows = matrix.size();
if (rows == 0) return -1; // Handle empty matrix
int cols = matrix[0].size();
std::unordered_map<int, int> map;
for (int i = 0; i < rows; i++) {
map[matrix[i][0]]++;
for (int j = 1; j < cols; j++) {
if (matrix[i][j] != matrix[i][j - 1]) {
map[matrix[i][j]]++;
}
}
}
for (auto element : map) {
if (element.second == rows) {
return element.first;
}
}
return -1;
}
int main() {
// Example matrix with sorted rows
std::vector<std::vector<int>> matrix = {
{1, 2, 3, 5, 36},
{4, 5, 7, 9, 10},
{5, 6, 8, 9, 18},
{1, 3, 5, 8, 24}
};
int result = findCommonElementInMatrixRows(matrix);
if (result != -1) {
std::cout << "Common element in all rows: " << result << std::endl;
} else {
std::cout << "No common element found in all rows." << std::endl;
}
}
/*
run:
Common element in all rows: 5
*/