-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinMaxDivision.js
More file actions
41 lines (37 loc) · 903 Bytes
/
MinMaxDivision.js
File metadata and controls
41 lines (37 loc) · 903 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//Score: 100%
// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');
function solution(K, M, A) {
var floor = -Infinity;
var ceil = 0;
for(var i=0; i < A.length; i++){
floor = Math.max(floor, A[i]);
ceil += A[i];
}
var minLargeSum = ceil;
while(floor <= ceil){
var mid = Math.ceil((floor+ceil)/2);
var curk = group(A, mid);
if(curk > K){
floor = mid + 1;
}else{
minLargeSum = Math.min(minLargeSum, mid);
ceil = mid - 1;
}
}
return minLargeSum;
}
function group(A, mid){
var k = 1;
var sum = 0;
for(var i=0; i < A.length; i++){
var next = sum + A[i];
if(next > mid){
sum = A[i];
k++;
}else{
sum = next;
}
}
return k;
}