用 Python 编写程序,查找小于目标的两个数字之和

pythonserver side programmingprogramming更新于 2026/1/5 8:44:17

假设我们有一个名为 nums 的数字列表,并且还有一个目标值,我们必须找到 nums 中最大一对数字之和,其和最多为 (target-1)。

因此,如果输入为 nums = [8, 3, 4, 9, 2] target = 8,则输出将为 7,因为小于 8 的最大一对数字之和为 4 + 3 = 7。

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

  • 对列表 nums 进行排序
  • p1 := 0
  • p2 := nums 的大小 - 1
  • m := -inf
  • while p1 < p2,执行
    • 如果 nums[p1] + nums[p2] < target,则
      • m := maximum of m and (nums[p1] + nums[p2])
      • p1 := p1 + 1
    • 否则,
      • p2 := p2 - 1
  • 返回 m

示例

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

import math
def solve(nums, target):
   nums.sort()
   p1 = 0
   p2 = len(nums) - 1
   m = -math.inf
   while p1 < p2:
      if nums[p1] + nums[p2] < target:
         m = max(m, nums[p1] + nums[p2])
         p1 += 1
      else:
         p2 -= 1
   return m

nums = [8, 3, 4, 9, 2]
target = 8
print(solve(nums, target))

输入

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

输出

7

相关文章


有用资源