import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* @author xnl
* @Description:
* @date: 2022/6/15 21:36
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
int[] nums = {1,3,1};
System.out.println(solution.smallestDistancePair(nums, 1));
}
public int smallestDistancePair(int[] nums, int k) {
Arrays.sort(nums);
int n = nums.length, left = 0, right = nums[n - 1] - nums[0];
while (left <= right){
int mid = (left + right) >> 1;
int cnt = 0;
for (int i = 1; i < n; i++){
cnt += i - binarySearch(nums, i, nums[i] - mid);
}
if (cnt >= k){
right = mid -1;
} else {
left = mid + 1;
}
}
return left;
}
private int binarySearch(int[] nums, int end, int target){
int left = 0, right = end;
while (left <= right){
int mid = (left + right) >> 1;
if (nums[mid] >= target ){
right = mid - 1;
} else {
left = mid + 1;
}
}
return left;
}
}
06-17
428
07-13
172
06-15
180