标签:双指针 距离 com find load 优化 vector 思路 while
class Solution {
public:
bool check(vector<int>& nums,int mid,int k)
{
int cnt=0;
for(int i=0;i<nums.size();i++)
{
int ops=lower_bound(nums.begin(),nums.end(),nums[i]+mid)-(nums.begin()+i);
cnt+=ops-1;
}
return cnt<k;
}
int smallestDistancePair(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int L=0,R=nums[nums.size()-1]-nums[0];
while(L<=R)
{
int mid=(L+R)>>1;
if(check(nums,mid,k))
L=mid+1;
else
R=mid-1;
}
return R;
}
};
class Solution {
public:
bool check(vector<int>& nums,int mid,int k)
{
int cnt=0;
int now=0;
for(int i=0;i<nums.size();i++)
{
while(now<nums.size()&&nums[i]-nums[now]>mid)
now++;
cnt+=(i-now);
}
return cnt<k;
}
int smallestDistancePair(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int L=0,R=nums[nums.size()-1]-nums[0];
while(L<R)
{
int mid=(L+R)>>1;
if(check(nums,mid,k))
L=mid+1;
else
R=mid;
}
return L;
}
};
标签:双指针 距离 com find load 优化 vector 思路 while
原文地址:https://www.cnblogs.com/Vampire6/p/13194769.html