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