用 Python 编写程序,计算差异大于目标的最大不同对数

pythonserver side programmingprogramming更新于 2026/2/2 8:12:17

假设我们有一个名为 nums 的数字列表和另一个值 target。我们必须找到最大对数,其中对于每对 i < j,i 和 j 不属于任何其他对,并且 |nums[i] - nums[j]| >= target。

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

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

  • N := A 的大小
  • 对列表 A 进行排序
  • ans := 0
  • j := N / 2
  • 对于范围为 0 到 N / 2 的 i,执行
    • 当 j < N 且 A[j] - A[i] < target 时,执行
      • j := j + 1
    • 若 j < N, 则
      • ans := ans + 1
      • j := j + 1
  • 返回 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

相关文章


有用资源