程序从列表中查找三个唯一元素,其和最接近 k Python
pythonserver side programmingprogramming更新于 2026/2/4 6:04:17
假设我们有一个名为 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
对于 i 在 0 到 nums 大小的范围内,执行
j := i + 1
k := nums 大小 − 1
while j < k,执行
s := nums[i] + nums[j] + nums[k]
如果 s <= target,则
ans := ans 和 target 的最小值 − s
j := j + 1
否则,
ans := ans 和 target 的最小值 − s
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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

