在Python中查找两个小于目标值的数字之和

在Python中查找两个小于目标值的数字之和

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

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

为了解决这个问题,我们将按照以下步骤进行操作−

  • 排序列表nums
  • p1 := 0
  • p2 := nums的大小-1
  • m :=-inf
  • while p1 < p2,则
    • 如果nums[p1] + nums[p2]<target,则
      • m :=m和(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:
      如果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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程