程序可计算差异大于Python中目标的不重复对的最大数量

假设我们有一个称为nums的数字列表和另一个值目标。我们必须找到最大对数,其中对于每个对i <j,i和j都没有其他对,并且| nums [i]-nums [j] | > =目标。

因此,如果输入类似于nums = [2,4,6,10,11],target = 5,则输出将为2,因为我们可以获得对:(2,6),(5,10)

为了解决这个问题,我们将遵循以下步骤-

  • N:= A的大小

  • 排序列表A

  • 回答:= 0

  • j:= N / 2

  • 对于0到N / 2范围内的i

    • 回答:=回答+1

    • j:= j + 1

    • j:= j + 1

    • 而j <N和A [j]-A [i] <目标,

    • 如果j <N,则

    • 返回ans

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

    示例

    class Solution:
       def solve(self, A, target):
          N = len(A)
          A.sort()
          ans = 0
          j = N >> 1
          for i in range(N >> 1):
             while j < N and A[j] - A[i] < target:
                j += 1
             if j < N:
                ans += 1
                j += 1
          return ans
    ob = Solution()nums = [2, 4, 6, 10, 11]
    target = 5
    print(ob.solve(nums, target))

    输入值

    [2, 4, 6, 10, 11], 5

    输出结果

    2
    猜你喜欢