Re: [闲聊] 每日leetcode

楼主: dont   2024-08-14 11:09:23
719. Find K-th Smallest Pair Distance
## 思路
两数差的范围是[0, max(nums) - min(nums)]
用 binary search 搜答案, 检查配对数是否超过k个
检查的函式: 数列sort过后, 用two pointer计算
## Code
```python
class Solution:
def smallestDistancePair(self, nums: List[int], k: int) -> int:
nums.sort()
n = len(nums)
def check(val):
count = right = 0
for left in range(n):
while right < n and nums[right] - nums[left] <= val:
# (nums[i], nums[right]) i: left~right-1
count += (right - left)
right += 1
return count >= k
res = 0
left, right = 0, nums[-1] - nums[0]
while left <= right:
mid = (left + right) // 2
if check(mid):
res = mid
right = mid - 1
else:
left = mid + 1
return res
```

Links booklink

Contact Us: admin [ a t ] ucptt.com