📜  大小为3的双子序列的最大乘积(1)

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

大小为3的双子序列的最大乘积

简介

在一个序列中选取大小为3的两个不相交的子序列,使得两个子序列中的元素个数均为3,并且它们的元素之积的乘积最大。

解题思路
  1. 首先我们将序列中的元素从小到大排序
  2. 按顺序遍历排序后的序列,对于当前的元素,分别计算它与前两个数的乘积,以及它与后两个数的乘积。
  3. 每轮遍历更新最大值。
代码实现
def max_product(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    nums.sort()
    n = len(nums)
    return max(nums[n-1] * nums[n-2] * nums[n-3], nums[n-1] * nums[0] * nums[1])
算法复杂度

排序的时间复杂度为O(nlogn),遍历的时间复杂度为O(n),因此总时间复杂度为O(nlogn)。

总结

该题目使用了排序和遍历两种算法,通过将原问题转化为更小的子问题,最终求得最优解。