首页 > 解决方案 > 为什么我的 Sum 算法卡在一个循环中/需要很长时间?

问题描述

我是算法世界的新手,并且在学习了一些之后尝试编写自己的算法。我试图找出数组中两个数字的总和是否等于目标值。问题是它不断循环,我将非常感谢一些帮助,因为我似乎无法看到它是什么。

arr = [1,2,3,4,4]
target = 8

def findSum(arr, target):

  if len(arr) <= 1:
    return False
  low = 0
  high = len(arr) - 1

  while low <= high:
    for i in range(low, high):
      for j in range(high, low, -1):
        if (arr[i]+arr[j]) == target:
          return(arr[i], arr[j])
        elif (arr[i]+arr[j]) > target:
          high -= 1
        else:
          low += 1
  return False

findSum(arr, target)

PS 对未注释的代码感到抱歉,我认为它的简单性没有必要。

标签: python

解决方案


你做错了,你可能想试试这个,

arr = [1,2,3,4,4]
target = 8

def findSum(arr, target):
    start = 0
    end = len(arr) - 1

    while start < end:
        if arr[start] + arr[end] == target:
            return (arr[start], arr[end])
        elif arr[start] + arr[end] < target:
            start += 1
        else:
            end -= 1

    return False

print(findSum(arr, target))

输出:

(4, 4)

推荐阅读