Leetcode 1552. Magnetic force between two balls

topic

Insert image description here
Leetcode 1552. Magnetic force between two balls

Code (9.17 first brush to see the analysis)

Didi 9.15 written test questions

class Solution {
    
    
public:
    bool check(int x, vector<int>& position, int m) {
    
    
        int pre = position[0], cnt = 1;
        for(int i = 1; i < position.size(); ++i) {
    
    
            if(position[i] - pre >= x) {
    
        // 累计可以放下球的个数
                pre = position[i];
                cnt += 1;
            }
        }
        return cnt >= m;
    }
    int maxDistance(vector<int>& position, int m) {
    
    
        sort(position.begin(), position.end());
        int left = 1, right = position.back()-position[0], ans = -1;
        while(left <= right) {
    
    
            int mid = (left+right)/2;
            if(check(mid, position, m)) {
    
       // 若放得下m个球,增大球间距
                ans = mid;
                left = mid+1;
            } else {
    
        // 若放不下则减少球间距
                right = mid -1;
            }
        }
        return ans;
    }
};

Guess you like

Origin blog.csdn.net/weixin_51322383/article/details/132938813