给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
幸运数是指矩阵中满足同时下列两个条件的元素:
在同一行的所有元素中最小
在同一列的所有元素中最大
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix
解答:所有的幸运数都是来自于每一行的最小值,因此先找出每一行的最小值然后迭代出最小值中的最大值,最后判断该最大值是否是所在列的最大值,如果是返回该最大值,如果不是则返回空容器。
class Solution {
public:
vector<int> luckyNumbers (vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
int idx = 0;
int t = INT_MIN;
for(auto const& i : matrix){
auto minx = min_element(i.begin(), i.end());
if(*minx > t){
t = *minx;
idx = minx - i.begin();
}
}
for(auto const& i : matrix){
if(i[idx] > t) return {};
}
return {t};
}
};