📜  数组中具有最小绝对差的所有对的计数(1)

📅  最后修改于: 2023-12-03 15:26:10.992000             🧑  作者: Mango

数组中具有最小绝对差的所有对的计数

介绍

给定一个整数数组,计算具有最小绝对差的所有对的数量。

例如,数组 [1,2,3,4] 具有最小绝对差 |1-2|=|2-3|=|3-4|=1。因此,具有最小绝对差的所有对的数目为 3。

思路

为了找到具有最小绝对差的所有对,我们可以进行以下步骤:

  1. 对数组进行排序,这样相邻的元素就有可能具有最小绝对差。
  2. 遍历排序后的数组,比较相邻元素的差值,找到差值最小的对。
  3. 如果存在多个差值相等的对,则将计数器加一。
  4. 返回计数器的值。
代码实现
class Solution:
    def countPairs(self, nums: List[int]) -> int:
        nums.sort()
        min_diff = float('inf')
        count = 0
        for i in range(len(nums)-1):
            diff = abs(nums[i+1]-nums[i])
            if diff < min_diff:
                min_diff = diff
                count = 1
            elif diff == min_diff:
                count += 1
        return count
复杂度分析

时间复杂度:$O(n\log n)$,其中 n 是数组的长度。排序的时间复杂度为 $O(n\log n)$,遍历数组的时间复杂度为 $O(n)$。

空间复杂度:$O(1)$。排序的空间复杂度为 $O(1)$,没有使用额外的空间。