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小的距离对二分 & 双指针的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode719.找出第k小的距离对二分 & 双指针

LeetCode 719 找出第K小的数对距离[二分法 双指针] HERODING的LeetCode之路

719. 找出第 k 小的距离对

leetcode658+有序数组找出距离数字x最近的k个数字

Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k

Leetcode练习(Python):二分查找类:第230题:二叉搜索树中第K小的元素:给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k