用 Python 编写程序检查已排序列表中两个数字之和是否等于 k

pythonserver side programmingprogramming更新于 2026/1/5 9:16:17

假设我们有一个名为 nums 的数字列表,nums 中的元素按升序排序。我们还有另一个值 k,我们必须检查从列表中取出的任何两个元素之和是否等于 k。数字也可以是负数或 0。我们必须在恒定的空间使用量内解决这个问题。

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

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

  • i := 0
  • j := size of nums - 1
  • while 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

相关文章


有用资源