程序找到两对数字,其中这对数字之和之和在python中最小

假设我们有一个称为nums的数字列表,我们想从中选择两对数字,以使这两对数字之和之间的绝对差最小。

因此,如果输入类似于nums = [3,4,5,10,7],则输出将为1,因为我们可以选择这些对(3 + 7)-(4 + 5)= 1。

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

  • 距离:=一个新列表

  • 对于范围从0到nums的i-2,执行

    • [dist,i1,i2]:=距离[i]

    • j:= i + 1

    • [dist2,i3,i4]:=距离[j]

    • j <(i1,i2,i3,i4)中距离和元素的大小不是唯一的,

    • 如果(i1,i2,i3,i4)中的元素是唯一的,则

    • 返回ans

    • [dist2,i3,i4]:=距离[j]

    • j:= j + 1

    • ans:= ans和(dist2-dist)的最小值

    • 插入列表[| nums [i]-nums [j] | ,i,j]在距离的尽头

    • 对于范围i + 1到nums-1的j

    • 排序列表距离

    • 回答:= 1 ^ 9

    • 对于范围在0到距离大小-2的i

    让我们看下面的实现以更好地理解:

    范例程式码

    class Solution:
       def solve(self, nums):
          distances = []
          for i in range(len(nums) - 1):
             for j in range(i + 1, len(nums)):
                distances.append((abs(nums[i] - nums[j]), i, j))
          distances.sort()
          ans = 1e9
          for i in range(len(distances) - 1):
             dist, i1, i2 = distances[i]
             j = i + 1
             dist2, i3, i4 = distances[j]
             while j < len(distances) and len({i1, i2, i3, i4}) != 4:
                dist2, i3, i4 = distances[j]
                j += 1
             if len({i1, i2, i3, i4}) == 4:
                ans = min(ans, dist2 - dist)
          return ans
    
    ob = Solution()nums = [3, 4, 5, 10, 7]
    print(ob.solve(nums))

    输入值

    [3, 4, 5, 10, 7]

    输出结果

    1