Binary Search Leetcode problem ( 1552. Magnetic Force Between Two Balls )


video 53

Following is java code.

class Solution {
    public boolean isPossible(int[] arr , int m , int k )
    {
        int prev = 0;
        m--;

        for(int i=0;i<arr.length;i++)
        {
            if(arr[i] - arr[prev] >= k)
            {
                m--;
                prev = i ;
            }
            if(m<=0)
            return true;
        }
        return false;
    }
    public int maxDistance(int[] position, int m) {

        Arrays.sort(position);
        int l=0;
        int r = (int)Math.pow(10,9);
        while(l<=r)
        {                                               
            int mid = l + (r-l)/2;                       // using the right most 

            if(isPossible(position , m , mid))
            l = mid + 1;
            else
            r = mid - 1;
        }
        return r;
    }
}