LeetCode-1380-矩阵中的幸运数

2020-10-26  本文已影响0人  阿凯被注册了

给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。
幸运数是指矩阵中满足同时下列两个条件的元素:
在同一行的所有元素中最小
在同一列的所有元素中最大


image.png

解题思路:

  1. 模拟,选出每一行的最小值,每一列的最大值;
  2. 再遍历依次,匹配。

Python3代码:

class Solution:
    def luckyNumbers (self, matrix: List[List[int]]) -> List[int]:
        m, n = len(matrix), len(matrix[0])
        row = [1e9]*m  # 每行的最小值
        col = [0]*n  # 每列的最大值
        
        for i in range(m):
            for j in range(n):
                row[i] = min(row[i], matrix[i][j])
                col[j] = max(col[j], matrix[i][j])

        ans = []
        for i in range(m):
            for j in range(n):
                if matrix[i][j] == row[i] and matrix[i][j] == col[j]:
                    ans.append(matrix[i][j])
        
        return ans
class Solution:
    def luckyNumbers (self, matrix: List[List[int]]) -> List[int]:
        # 行最小、列最大
        mines = {min(rows) for rows in matrix}
        maxes = {max(columns) for columns in zip(*matrix)}
        return list(mines & maxes)
上一篇下一篇

猜你喜欢

热点阅读