Find K-th Smallest Pair Distance LeetCode solution in C++

1
class Solution {
2
public:
3
int count(vector<int> &temp, int mid) {
4
int i = 0, j = 0, n = temp.size();
5
int len = 0;
6

7
while (i < n) {
8
while (j < n && (temp[j] - temp[i]) <= mid) j++;
9
len += j - i - 1;
10
i++;
11
}
12
return len;
13
}
14
int smallestDistancePair(vector<int> &nums, int k) {
15
int s = 0, e = 1e6;
16
int ans = 0;
17
vector<int> temp = nums;
18
sort(temp.begin(), temp.end());
19
while (s <= e) {
20
int mid = s + (e - s) / 2;
21

22
if (count(temp, mid) >= k) {
23
ans = mid;
24
e = mid - 1;
25
} else {
26
s = mid + 1;
27
}
28
}
29
return ans;
30
}
31
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0