📅  最后修改于: 2023-12-03 15:26:10.992000             🧑  作者: Mango
给定一个整数数组,计算具有最小绝对差的所有对的数量。
例如,数组 [1,2,3,4] 具有最小绝对差 |1-2|=|2-3|=|3-4|=1。因此,具有最小绝对差的所有对的数目为 3。
为了找到具有最小绝对差的所有对,我们可以进行以下步骤:
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)$,没有使用额外的空间。