首页 > 解决方案 > 在 python 的列表中找到使用 3 个元素可形成的最大产品?

问题描述

我尝试了这个问题并编写了代码。谁能告诉我我的代码是否涵盖所有情况,以及是否有更好的方法。

这是我的代码

a = [-12, -4, 6, 3]
a.sort()


if a[0]*a[1] > a[-1]*a[-2]:
    res = a[0]*a[1]*a[-1]
else:
    res = a[-1]*a[-2]*a[-3]

print(res)

标签: pythonpython-3.xlist

解决方案


这可以在 O(nlogn) 时间和 O(1) 空间内非常有效地完成。首先,对列表进行排序。然后返回列表的最后三个元素的乘积与前两个元素和最后一个元素的乘积的最大值。

def prod (lis):
  lis.sort()
  return max(lis[0] * lis[1] * lis[-1], lis[-1] * lis[-2] * lis[-3])

推荐阅读