题目描述
给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了。请你帮忙找出在所有这些行中 最小的公共元素。
如果矩阵中没有这样的公共元素,就请返回 -1。
样例
输入:mat = [[1,2,3,4,5],[2,4,5,8,10],[3,5,7,9,11],[1,3,5,7,9]]
输出:5
提示:
1 <= mat.length, mat[i].length <= 500
1 <= mat[i][j] <= 10^4
mat[i] 已按递增顺序排列。
算法1
暴力解法 使用哈希记录每行 然后比较
C++ 代码
class Solution {
public:
unordered_map<int, int> umap[510];
int smallestCommonElement(vector<vector<int>>& mat) {
if (mat.empty() || mat[0].empty()) return -1;
for (int i = 0; i < mat.size(); i++)
{
for (int j = 0; j < mat[0].size(); j++) {
umap[i][mat[i][j]]++;
}
}
for (int j = 0; j < mat[0].size(); j++) {
int find = 1;
int findNum = mat[0][j];
for (int i = 1; i < mat.size(); i++) {
if (umap[i][findNum] == 0) {
find = 0;
break;
}
}
if (find == 1)
{
return findNum;
}
}
return -1;
}
};