解题思路
幸运数的概念是:同一行中最小的数 && 同一列中最大的数
找到同一行中最小的数存到数组中,在找到同一列中最大的数,存到数组中。如果 \textit{matrix}[i][j]matrix[i][j] 同时满足 \textit{matrix}[i][j]=\textit{minRow}[i]matrix[i][j]=minRow[i] 和 \textit{matrix}[i][j] = \textit{maxCol}[j]matrix[i][j]=maxCol[j],那么 \textit{matrix}[i][j]matrix[i][j] 是矩阵中的幸运数,加入返回结果
代码
var luckyNumbers = function(matrix) {
const m = matrix.length, n = matrix[0].length;
const minRow = new Array(m).fill(Number.MAX_SAFE_INTEGER);
const maxCol = new Array(n).fill(0);
const res = [];
for(let i = 0;i<m;i++){
for(let j = 0;j<n;j++){
minRow[i] = Math.min(minRow[i],matrix[i][j]);
maxCol[j] = Math.max(maxCol[j],matrix[i][j])
}
}
for(let i = 0;i<m;i++){
for(let j = 0;j<n;j++){
if (matrix[i][j] === minRow[i] && matrix[i][j] === maxCol[j]) {
ret.push(matrix[i][j]);
}
}
}
return res;
};
const matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]