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