美文网首页
LeetCode-1380-矩阵中的幸运数

LeetCode-1380-矩阵中的幸运数

作者: 阿凯被注册了 | 来源:发表于2020-10-26 05:31 被阅读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)
    

    相关文章

      网友评论

          本文标题:LeetCode-1380-矩阵中的幸运数

          本文链接:https://www.haomeiwen.com/subject/gvfapktx.html