python - 在 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)
解决方案
这可以在 O(nlogn) 时间和 O(1) 空间内非常有效地完成。首先,对列表进行排序。然后返回列表的最后三个元素的乘积与前两个元素和最后一个元素的乘积的最大值。
def prod (lis):
lis.sort()
return max(lis[0] * lis[1] * lis[-1], lis[-1] * lis[-2] * lis[-3])
推荐阅读
- node.js - Sequelize() 不返回 sequelize 的实例
- python - 需要对 Coef 进行澄清。和 St.Err。MixedLM 结果中的随机参数
- java - 在 Neo4j 中优先过滤单个属性
- sql-server - 达到特定数据库大小时收到警告
- ios - “FIRInstanceID”没有可见的@interface 声明选择器“setAPNSToken:type:”
- azure - ASA Lag 正在返回给定持续时间之外的结果
- android - 如何自定义 android CalendarView 单元格?
- javascript - 表格拖动器的基本实现
- python - 是否可以在 Python 中将二进制文件的内容作为字典读取?
- python - 定义的 PiCamera camera.shutter 与查询的 camera.exposure_speed 不匹配