LeetCode 719 找出第 k 小的距离对

找出第 k 小的距离对

题目

在这里插入图片描述

思路

二分思想。

代码

class Solution {
public:
    int smallestDistancePair(vector<int>& nums, int k) {
        sort(nums.begin(),nums.end());
        int l=0,r=nums.back()-nums.front(),len=nums.size();
        while(l<r)
        {
            int mid=l+(r-l)/2;
            int num=0,mi=0;
            for(int i=0;i<len;i++)
            {
                while(mi<len&&nums[i]-nums[mi]>mid) mi++;
                num+=i-mi;
            }
            if(num<k) l=mid+1;
            else r=mid;
        }
        return l;
    }
};
发布了173 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/shidonghang/article/details/102946016
今日推荐