Leetcode719.找出第k小的距离对二分 & 双指针
Posted nirvana · rebirth
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode719.找出第k小的距离对二分 & 双指针相关的知识,希望对你有一定的参考价值。
AC-Code
class Solution {
public:
int smallestDistancePair(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
auto check = [&](int mid) -> bool { // 是否有至少k组,差值<=mid
int cnt = 0, j = 1;
for(int i = 0; i < nums.size(); ++i) {
while(j < nums.size() && nums[j] - nums[i] <= mid) ++j;
cnt += j - i - 1;
}
return cnt >= k;
};
int l = 0, r = nums[nums.size() - 1] - nums[0];
while(l < r) {
int mid = (l + r) >> 1;
if(check(mid)) {
r = mid;
}
else {
l = mid + 1;
}
}
return l;
}
};
以上是关于Leetcode719.找出第k小的距离对二分 & 双指针的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 719 找出第K小的数对距离[二分法 双指针] HERODING的LeetCode之路
leetcode658+有序数组找出距离数字x最近的k个数字
Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k
Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k