Closed MuhammadTausif closed 3 months ago
class Solution:
def smallestDistancePair(self, nums: list[int], k: int) -> int:
nums.sort()
def numPairDistancesNoGreaterThan(m: int) -> int:
count = 0
j = 1
# For each index i, find the first index j s.t. nums[j] > nums[i] + m,
# so numPairDistancesNoGreaterThan for the index i will be j - i - 1.
for i, num in enumerate(nums):
while j < len(nums) and nums[j] <= num + m:
j += 1
count += j - i - 1
return count
return bisect.bisect_left(
range(0, nums[-1] - nums[0]), k,
key=lambda m: numPairDistancesNoGreaterThan(m))
719. Find K-th Smallest Pair Distance
Hard
The distance of a pair of integers a and b is defined as the absolute difference between a and b.
Given an integer array nums and an integer k, return the kth smallest distance among all the pairs nums[i] and nums[j] where 0 <= i < j < nums.length.
Example 1:
Constraints: