检查Python中已排序列表中两个数字的总和是否达到k

检查Python中已排序列表中两个数字的总和是否达到k

假设我们有一个名为nums的数字列表,其中nums的元素按升序排序。 我们还有另一个值k,必须检查列表中任何两个元素是否相加达到k。 数字也可以是负数或0。 我们必须在占用常量空间的情况下解决此问题。

因此,如果输入类似于nums = [-8,-3,2,7,9] k = 4,则输出将为True,因为如果我们取7和-3,则总和为7 +(-3)= 4,这与k相同。

为了解决这个问题,我们将遵循以下步骤−

  • i:= 0
  • j:= nums的大小 – 1
  • while i < j,do
    • cur_sum:= nums [i] + nums [j]
    • 如果cur_sum与k相同,则
      • return True
    • 否则当cur_sum < k时,则
      • i:= i + 1
    • 否则,
      • j:= j – 1
  • return False

示例

让我们看下面的实现,以便更好地理解−

def solve(nums, k):
   i = 0
   j = len(nums) - 1
   while i < j:
      cur_sum = nums[i] + nums[j]
      if cur_sum == k:
         return True
      elif cur_sum < k:
         i += 1
      else:
         j -= 1
   return False

nums = [-8,-3,2,7,9]
k = 4
print(solve(nums,k))

输入

[-8,-3,2,7,9],4

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程