Python程序:查找列表中三个唯一元素,使其和最接近k
假设我们有一个名为 nums 的数字列表和另一个值 k,我们需要在 nums 中找到三个唯一的条目 (a、b、c),使得 |a + b + c − k| 最小化,并返回绝对差值。
因此,如果输入类似于 nums = [2, 5, 25, 6] k = 14,则输出将为 1,因为如果我们取 [2, 5, 6] 将使我们最接近 14,并且绝对差值为 |13 − 14| = 1。
为了解决这个问题,我们将遵循以下步骤 -
对列表 nums 进行排序
ans := 1^9
对于范围从 0 到 nums 大小的 i,执行以下操作
j := i + 1
k := nums 大小 − 1
当 j < k 时,执行以下操作
s := nums[i] + nums[j] + nums[k]
如果 s <= target,则
ans := ans 和 target − s 的最小值
j := j + 1
否则,
ans := ans 和 s − target 的最小值
k := k − 1
返回 ans
让我们看看下面的实现以获得更好的理解 -
示例
class Solution: def solve(self, nums, target): nums.sort() ans = 1e9 for i in range(len(nums)): j = i + 1 k = len(nums) − 1 while j < k: s = nums[i] + nums[j] + nums[k] if s <= target: ans = min(ans, target - s) j += 1 else: ans = min(ans, s - target) k −= 1 return ans ob1 = Solution() nums = [2, 5, 25, 6] k = 14 print(ob1.solve(nums, k))
输入
[2, 5, 25, 6], 14
输出
1
广告