You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python最大成对乘积代码提交Coursera判题超时如何优化修改

报错原因

你当前使用的是暴力枚举所有两两元素组合的解法,时间复杂度为O(n²),当测试用例的数组长度n较大时,运算量会呈平方级增长,直接超出题目规定的时间上限。

优化思路

我们只需要一次遍历数组,把时间复杂度降到*O(n)*即可解决问题,注意要同时覆盖两种可能得到最大乘积的场景:

  • 两个最大的正数相乘
  • 两个最小的负数(绝对值最大)相乘

仅需要在一次遍历中记录数组中最大的两个值、最小的两个值,最后对比两种场景的乘积取最大值即可。

优化后代码

n = int(input())
arr = list(map(int, input().strip().split()))[:n]

# 初始化最大的两个值
max1 = max2 = float('-inf')
# 初始化最小的两个值
min1 = min2 = float('inf')

for num in arr:
    # 更新最大值序列
    if num > max1:
        max2 = max1
        max1 = num
    elif num > max2:
        max2 = num
    # 更新最小值序列
    if num < min1:
        min2 = min1
        min1 = num
    elif num < min2:
        min2 = num

result = max(max1 * max2, min1 * min2)
print(result)

额外注意点

原代码中input、print里多余的空字符串可以删除,减少不必要的输入输出开销。

内容的提问来源于stack exchange,提问作者ccs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:45:04