【发布时间】:2021-07-25 17:51:15
【问题描述】:
嘿,试图加快这个功能,希望得到帮助。我很清楚这很草率:/
无论如何,它需要 3 个输入数组长度(下一个输入的长度)、lst(我们将用来求和并找到目标的数组)、目标(我要计算的数字)。
如前所述,它获取列表,然后将每个 2 个元素的组合相加,直到找到目标变量,如果存在多个,则只输出一个。如果没有,则打印无。提前致谢
l = 43
input_array = range(43)
t = 30
def target_finder():
l = input()
input_array = input()
t = input()
l = int(l)
input_array = input_array.split()
arr = []
for el in input_array:
arr.append(int(el))
t = int(t)
x = []
for el in arr:
for num in range(l):
x.append(tuple((el, arr[num], (el + arr[num]))))
y = []
for el in x:
if el[2] == target:
y.append(el[0])
y.append(el[1])
if len(y) <2:
print('None')
elif y[0] == y[1]:
print('None')
else:
print(y[0], y[1])
上面的输出可能是 10、20
【问题讨论】:
-
应该输出多少个数字?只有4个?或者可以是 3 还是 2 等等。
-
哦,它仅限于 2 个数字,现在不正确,抱歉
-
我相信这是我索引值和使用列表的方式确实减慢了速度
-
这是一个著名的问题,称为二和 (leetcode.com/problems/two-sum)。在
O(nlogn)时间内解决它的一种方法(假设列表已排序)是遍历列表,将目标更新为new_target = target - list[i],然后对列表进行二进制搜索以查找新目标。另一种方法是使用两个指针 (geeksforgeeks.org/two-pointers-technique) -
列表推导可以摆脱 here 描述的追加调用,并且可能会产生非常小的差异
标签: python function combinations