1
var splitArray = function (nums, m) {
2
let low = Math.max(...nums);
3
let high = 0;
4
let ans = 0;
5

6
for (let num of nums) {
7
high += num;
8
}
9

10
while (low <= high) {
11
let mid = Math.floor(low + (high - low) / 2); // to prevent overflow
12

13
if (isPossible(nums, mid, m)) {
14
ans = mid;
15
high = mid - 1;
16
} else {
17
low = mid + 1;
18
}
19
}
20
return ans;
21
};
22

23
function isPossible(arr, mid, noOfParts) {
24
let part = 1;
25
let sum = 0;
26

27
for (let i = 0; i < arr.length; i++) {
28
sum += arr[i];
29

30
if (sum > mid) {
31
part++;
32
sum = arr[i];
33
}
34
}
35
return part <= noOfParts;
36
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0