从列表中查找三个和的最独特元素的和

假设我们有一个称为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
    猜你喜欢