【发布时间】:2020-06-11 13:42:53
【问题描述】:
Input : l1 = [1,2,3,4,5,6]
Output : [7, 8, 9, 10, 11, 11]
求列表中每对所有元素的最大和。
一般来说,我必须将列表中的每个元素添加到另一个元素(而不是自身)。
下面是我尝试过的代码。我知道这是(n^2) 的复杂性
有没有更好的方法来降低复杂性(可以是时间和空间)?
任何更好的方法(可能使用一些模块或仅使用单个 for 循环)?
list l1 不必在sorted 中。
l2=[]
l3=[]
for i in range(len(l1)):
for j in range(len(l1)):
if i!=j:
l2.append(l1[i]+l1[j])
l3.append(max(l2))
l2.clear()
print(l3)
[7, 8, 9, 10, 11, 11]
更新:
在hackerrank中提交了这个解决方案,但在少数情况下它会失败。
失败原因是TimeLimitExceed (TLE)。我认为,由于数量众多,它会失败。
**Constraints:**
n = size_of_list
1<= n <= 4*10^4
1<= l1[i] <= 1024
1<= i <= n
1<= j <= n
j != i
是不是因为time-complexity,上面的sn-p没能处理好这些场景?
【问题讨论】:
标签: python-3.x list time-complexity complexity-theory space-complexity