📌  相关文章
📜  在奇偶校验的数组中找到最大和对(1)

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

在奇偶校验的数组中找到最大和对

问题描述

给定一个由整数组成的二维数组 matrix,每行为奇数位或者偶数位,其中偶数行先升序排列,奇数行先降序排列。请你找出其中的最大元素对,并返回该最大元素对的值之和。

示例
输入:matrix = [[1,5],[7,3],[3,5]]
输出:8
解释:最大元素对是 (7,1),其中 7 是第二行奇数行中最大的整数,1 是第一行偶数行中最大的整数,两者之和为 8。
思路

由于偶数行是升序排列的,因此每行偶数行的最大值肯定是最后一个元素。而奇数行是降序排列的,因此每行奇数行的最大值肯定是第一个元素。

我们可以通过遍历每一行,找到该行最大元素对,并记录最大值。时间复杂度为 $O(mn)$,其中 $m$ 和 $n$ 分别为 matrix 的行数和列数。

代码实现
class Solution:
    def maxSumPair(self, matrix: List[List[int]]) -> int:
        n, m = len(matrix), len(matrix[0])
        res = 0
        for i in range(n):
            if i % 2 == 0:
                res += matrix[i][-1]
            else:
                res += matrix[i][0]
        return res
复杂度分析

时间复杂度:$O(mn)$,其中 $m$ 和 $n$ 分别为 matrix 的行数和列数。

空间复杂度:$O(1)$,我们只需要常数级别的额外空间。