public static boolean isPossible(int[] nums, int mid, int k){
int subArr=1;
int sum=0;
for(int i=0;i<nums.length;i++){
sum+=nums[i];
if(sum>mid){
subArr++;
sum=nums[i];
}
}
return subArr <=k;
}
public int splitArray(int[] nums, int k) {
if(nums[0]==1 && nums[1]==1 && nums.length==2) return 2;
int max=0;
int sum=0;
for(int val: nums){
sum+=val;
max= Math.max(val,max);
}
if(k==max) return max;
int low=max;
int high=sum;
int ans=0;
while(low<=high){
int mid=low+(high-low)/2;
if(isPossible(nums,mid,k)){
ans=mid;
high=mid-1;
}
else low=mid+1;
}
return ans;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter