【问题标题】:Basic Number Function基本编号功能
【发布时间】: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


【解决方案1】:

好的,这是我对这个问题的尝试。我遍历元素,并检查element - target 是否在数组中,以及element - target != element 是否在数组中。另外,我改为使用函数参数。我相信时间复杂度是O(n²)

def target_finder(input_array, target):
    matches = []
    for element in input_array[:-1]:
        if target - element in input_array and target - element != element:
            matches.append([element, target - element])

    if len(matches) == 0:
        return 0
    else:
        return matches


# Map is similar to iterating through and running the provided function on each element (in this case, int).
# print(target_finder(map(int, input("Target Array: ").split()), int(input("Target Number: "))))
print(target_finder(list(range(43)), 30))

【讨论】:

  • 感谢您,我将在未来查看 leetcode 和hackerthon,以提前解决这些令人头疼的问题!
  • @DigitalMoniker 很高兴为您提供帮助!
猜你喜欢
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 2012-05-14
  • 2020-12-27
相关资源
最近更新 更多