1class Solution {2int[] nums;34public int splitArray(int[] nums, int m) {5this.nums = nums;6int low = 0, high = 0, min = Integer.MAX_VALUE;7for (int i = 0; i < nums.length; i++) {8low = Math.max(low, nums[i]);9high += nums[i];10}11while (low <= high) {12int mid = (low + high) / 2;13if (required_no_of_chunks(mid, m)) {14min = Math.min(min, mid);15high = mid - 1;16} else low = mid + 1;17}18return min;19}2021private boolean required_no_of_chunks(int mid, int m) {22int chunks = 0, i = 0;23while (i < nums.length) {24int val = 0;25while (i < nums.length && nums[i] + val <= mid) val += nums[i++];26chunks++;27}28return chunks <= m;29}30}