1552.两球之间的磁力
思路:二分查找。首先对数组position进行排序,然后对磁力的大小进行二分查找。二分查找里调用的函数,用到了贪心的策略。
class Solution {
public:
bool check(int u,vector<int>& position, int m){
int ct=1;
int last=position[0];
for(int i=1;i<position.size();i++){
if(position[i]-last>=u){
last=position[i];
ct++;
}
}
return ct>=m;
}
int maxDistance(vector<int>& position, int m) {
sort(position.begin(),position.end());
int l=1,r=position[position.size()-1];
while(l<r){
int mid=(l+r+1)/2;
if(check(mid,position,m)) l=mid;
else r=mid-1;
}
return l;
}
};