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.)
已返回。 我该如何更改?
答案 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)
首先对项目进行降序排序,然后再从排序后的列表中乘以第一和第二个(当然,如果所有结果都是肯定的),会不会花费更少的时间?