📌  相关文章
📜  国际空间研究组织 | ISRO CS 2018 |问题 29(1)

📅  最后修改于: 2023-12-03 15:23:04.488000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2018 |问题 29

问题描述

给定一个由4个数组成的矩阵,其中每行都可以按任意顺序重排。现在,您需要确定每一行的最大值,并确定这些值的最小值。

函数签名
def find_min_max(matrix: List[List[int]]) -> Tuple[int, int]:
    pass
输入格式:
  • matrix:由4个数组成的矩阵。其中每个数组都包含至少一个整数,且至多包含100个整数。
  • 保证矩阵的每个元素都在[-10^3, 10^3]范围内。
输出格式:
  • 返回值:一个元组(a, b),其中a表示矩阵每一行最大值的最小值,b表示矩阵每一列最小值的最大值。
例子
输入:
matrix = [[1, 2, 3, 4], [2, 3, 4, 1], [5, 6, 7, 1], [6, 7, 8, 1]]
输出:
(2, 6)
解题方法

题目定义的矩阵中每个数组并不能保证是按升序或降序排列的,因此我们需要找到最大值,才能找到每一行的最大值。

具体的做法是,使用python内置的max函数,找出每个数组的最大值,然后再求出最小值。同样,使用min函数,找出每一列的最小值,然后再求出最大值。

我们可以遍历矩阵的每一行,找到其中的最大值,然后再找到矩阵中所有行的最大值中的最小值。同样的,我们可以遍历每一列,找到其中的最小值,然后再找到所有列的最小值中的最大值。

最终的代码如下所示:

from typing import List, Tuple

def find_min_max(matrix: List[List[int]]) -> Tuple[int, int]:
    row_max = []
    col_min = []

    # 遍历每一行
    for row in matrix:
        row_max.append(max(row))

    # 遍历每一列
    for i in range(len(matrix[0])):
        col_min.append(min(matrix[j][i] for j in range(len(matrix))))

    return min(row_max), max(col_min)

在代码中,我们通过列表推导式,遍历矩阵的每一列,找到其中的最小值。使用min函数,找到所有列的最小值中的最大值。