二月

2022.2.15 矩阵中的幸运数 ⭐

:point_right: Leetcode 链接在新窗口打开

给你一个 m * n 的矩阵,矩阵中的数字各不相同。请你按任意顺序返回矩阵中的所有幸运数。

幸运数是指矩阵中满足同时下列两个条件的元素:

  • 在同一行的所有元素中最小
  • 在同一列的所有元素中最大

提示

  • 示例 1:

    • 输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]
    • 输出:[15]
function luckyNumbers(matrix: number[][]): number[] {
    let row = matrix.length, columns = matrix[0].length, res = []
    let tempRows = new Array(row).fill(Number.MAX_SAFE_INTEGER), tempColums = new Array(columns).fill(0)

    // 先构造每一行和每一列的最大值
    for (let i = 0; i < row; i++) {
        for (let j = 0; j < columns; j++) {
            tempRows[i] = Math.min(tempRows[i], matrix[i][j])
            tempColums[j] = Math.max(tempColums[j], matrix[i][j])
        }
    }

    // 比较相等即可
    for (let i = 0; i < row; i++) {
        for (let j = 0; j < columns; j++) {
            if (matrix[i][j] === tempColums[j] && matrix[i][j] === tempRows[i]) {
                res.push(matrix[i][j])
            }
        }
    }

    return res
};
上次更新:
贡献者: Joe