从列表中查找三个和的最独特元素的和
假设我们有一个称为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。
为了解决这个问题,我们将遵循以下步骤-
排序列表编号
回答:=1^9
对于范围从0到nums的i,执行
s:=nums[i]+nums[j]+nums[k]
如果s<=目标,则
除此以外,
ans:=ans和目标−s的最小值
j:=j+1
ans:=ans和s的最小值-目标
k:=k−1
j:=i+1
k:=数值大小-1
当j<k时
返回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