Python最大成对乘积时间限制超出错误

时间:2018-12-10 06:59:55

标签: python algorithm

n = int(input())
a = [int(x) for x in input().split()]
product = 0
for i in range(n):
  for j in range(i + 1, n):
    product = max(product, a[i] * a[j])
print(product)

当我将以上代码提交给Corsera的编码判断系统时,

Failed case #4/17: time limit exceeded (Time used: 9.98/5.00, memory used: 20918272/536870912.)

已返回。 我该如何更改?

2 个答案:

答案 0 :(得分:0)

它在O(n ^ 2)中。您可以对a进行排序,并在a中选择两个较大的值,作为O(n log(n))的结果(如果列表a的输入值为正)。

input_list = sorted(a)
product = max(a[0]*a[1], a[-1] * a[-2]) #as suggested in comments if there is negative values

答案 1 :(得分:0)

首先对项目进行降序排序,然后再从排序后的列表中乘以第一和第二个(当然,如果所有结果都是肯定的),会不会花费更少的时间?