package
0.0.0-20241220224003-b7cf03a90b2b
Repository: https://github.com/szhou12/leetcode-go.git
Documentation: pkg.go.dev
# README
719. Find K-th Smallest Pair Distance
Binary Search 猜答案
- 题目要求第k小的配对产生的绝对差值。那么,我们就用二分法高效地猜一个差值,数小于等于该差值的pair数是否够k个。如果此时pair数小于k个,说明猜小了;否侧 (大于等于k个),说明猜的值有可能是解。
- 那么,问题来到了,如何高效地数pair数?
- 数所有pair数需要$O(n^2)$
- 但是,如果给一个target差值
diff
和减数nums[i]
,在一个排好序的数组中,可以使用upperBound()
二分法找到第一个大于target+nums[i]
的indexj
。那么,对于i
而言,所有小于等于diff
的pair数 =(j-1) - i
。 - 再Loop
i
就可以找到所有符合条件的pair数。
Time complexity = $O(\log n * n\log n)$