Python程序:查找小于目标值的两个数字之和


假设我们有一个名为nums的数字列表和一个目标值,我们需要找到nums中最大的一对数字的和,其和最多为(目标值-1)。

例如,如果输入为nums = [8, 3, 4, 9, 2],目标值= 8,则输出为7,因为小于8的最大数字对的和是4 + 3 = 7。

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

  • 对列表nums进行排序
  • p1 := 0
  • p2 := nums的大小 - 1
  • m := -∞
  • 当p1 < p2时,执行以下操作:
    • 如果nums[p1] + nums[p2] < 目标值,则
      • m := m和(nums[p1] + nums[p2])中的最大值
      • p1 := p1 + 1
    • 否则:
      • p2 := p2 - 1
  • 返回m

示例

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

Open Compiler
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

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

7

更新于:2021年10月14日

619 次浏览

开启您的职业生涯

完成课程后获得认证

开始学习
广告