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
  • 当 i < j 时,执行以下操作:
    • cur_sum := nums[i] + nums[j]
    • 如果cur_sum与k相同,则
      • 返回True
    • 否则,当cur_sum < k时,则
      • i := i + 1
    • 否则,
      • j := j - 1
  • 返回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

更新于: 2021年10月14日

530 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告