题目地址

解题思路

幸运数的概念是:同一行中最小的数 && 同一列中最大的数

找到同一行中最小的数存到数组中,在找到同一列中最大的数,存到数组中。如果 \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] 是矩阵中的幸运数,加入返回结果

代码

  1. var luckyNumbers = function(matrix) {
  2. const m = matrix.length, n = matrix[0].length;
  3. const minRow = new Array(m).fill(Number.MAX_SAFE_INTEGER);
  4. const maxCol = new Array(n).fill(0);
  5. const res = [];
  6. for(let i = 0;i<m;i++){
  7. for(let j = 0;j<n;j++){
  8. minRow[i] = Math.min(minRow[i],matrix[i][j]);
  9. maxCol[j] = Math.max(maxCol[j],matrix[i][j])
  10. }
  11. }
  12. for(let i = 0;i<m;i++){
  13. for(let j = 0;j<n;j++){
  14. if (matrix[i][j] === minRow[i] && matrix[i][j] === maxCol[j]) {
  15. ret.push(matrix[i][j]);
  16. }
  17. }
  18. }
  19. return res;
  20. };
  21. const matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]]

总结