Leetcode5489. 两球之间的磁力【第 202场周赛】【二分】

题目链接
题意:n个点选m个点,使得相邻两球的最小距离最大。
思路:对相邻球的距离二分,注意二分范围即可。

class Solution {
public:
    bool chk(vector<int> a,int d,int n, int m){
        int tmp=a[0],cnt=1;
        for(int i=0;i<n;i++){
            if(a[i]-tmp>=d){
                cnt++;
                tmp=a[i];
            }
        }
        if(cnt>=m) return true;
        else return false;
    }
    int maxDistance(vector<int>& position, int m) {
        int n=position.size();
        sort(position.begin(),position.end());
        int l=0,r=position[n-1];
        while(l<=r){
            int mid=(l+r)>>1;
            if(chk(position,mid,n,m)) l=mid+1;
            else r=mid-1;
        }
        return r;
    }
};

你可能感兴趣的:(Leetcode,算法,leetcode)