【leetcode】1380. Lucky Numbers in a Matrix
题目如下:
Given a
m * n
matrix of distinct numbers, return all lucky numbers in the matrix in any order.A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.
Example 1:
Input: matrix = [[3,7,8],[9,11,13],[15,16,17]] Output: [15] Explanation: 15 is the only lucky number since it is the minimum in its row and the maximum in its columnExample 2:
Input: matrix = [[1,10,4,2],[9,3,8,7],[15,16,17,12]] Output: [12] Explanation: 12 is the only lucky number since it is the minimum in its row and the maximum in its column.Example 3:
Input: matrix = [[7,8],[1,2]] Output: [7]Constraints:
m == mat.length
n == mat[i].length
1 <= n, m <= 50
1 <= matrix[i][j] <= 10^5
.- All elements in the matrix are distinct.
解题思路:把每一行的最小值和每一列的最大值算出来即可。
代码如下:
class Solution(object): def luckyNumbers (self, matrix): """ :type matrix: List[List[int]] :rtype: List[int] """ row_min = [float('inf')] * len(matrix) column_max = [-float('inf')] * len(matrix[0]) for i in range(len(matrix)): for j in range(len(matrix[i])): row_min[i] = min(row_min[i],matrix[i][j]) column_max[j] = max(column_max[j],matrix[i][j]) res = [] for i in range(len(matrix)): for j in range(len(matrix[i])): if matrix[i][j] == row_min[i] == column_max[j]: res.append(matrix[i][j]) return res