Binary serach ( 410. Split Array Largest Sum )


video 56

class Solution {
    public boolean isPossible(int [] arr , int k ,int m )
    {
        int sum = 0 ;
        k--;
        for(int i=0;i<arr.length;i++)
        {
            int val = arr[i];
            if(val > m )
            return false;
            if(sum + val > m)
            {
                k--;
                sum = 0 ; 
            }

            sum+=val;

            if(k<0)
            return false;
        }
        return true;
    }
    public int splitArray(int[] nums, int k) {

        int l = 0 ;
        int r = 1000000000;
        while(l<=r)
        {
            int mid = l + (r-l)/2;
            if(isPossible(nums,k,mid))
                r = mid -1 ;
            else
                l = mid + 1;  
        }

        return l;
    }
}