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 回答
首先按降序对项目进行排序,然后将排序列表中的第一个和第二个相乘(当然,如果所有都是正数),是不是更少耗费时间?
它在O(n ^ 2) . 您可以对
a
进行排序,并在a
中选择两个较大的值作为O(n log(n))的结果(如果列表a
的输入值为正) .