题目:
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
幸运数是指矩阵中满足同时下列两个条件的元素:
- 在同一行的所有元素中最小
- 在同一列的所有元素中最大
示例:
输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]
输出:[15]
解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。
解题方法:
最近刷题总把题目想的太复杂了,这道题也是这样,题解的思路大致都是:
- 计算每一行的最小值;
- 判断改行最小值是否在所在列是最大值;
代码和结果:
class Solution {
public:
vector<int> luckyNumbers (vector<vector<int>>& matrix) {
vector<int> lk_num;
for(int i=0;i<matrix.size();i++)
{
int cols=0;
int minv=matrix[i][0];
for(int j=1;j<matrix[i].size();j++)
{
if(matrix[i][j]<minv)
{
minv=matrix[i][j];
cols=j;
}
}
bool flag=true;
for(int k=0;k<matrix.size();k++)
{
if(matrix[i][cols]<matrix[k][cols])
{
flag=false;
break;
}
}
if(flag)
lk_num.push_back(matrix[i][cols]);
}
return lk_num;
}
};
运行结果:

原题链接:https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix/
网友评论