解题思路
幸运数的概念是:同一行中最小的数 && 同一列中最大的数
找到同一行中最小的数存到数组中,在找到同一列中最大的数,存到数组中。如果 \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]]
