Maximum Value at a Given Index in a Bounded Array LeetCode solution in JavaScript

1
var maxValue = function (n, index, maxSum) {
2
function getSum(len, v) {
3
var sum = 0;
4
if (len <= v) {
5
sum = ((2 * v - len + 1) * len) / 2;
6
} else {
7
sum = ((1 + v) * v) / 2 + len - v;
8
}
9
return sum;
10
}
11
function isValid(mid) {
12
var curSum = getSum(leftLen, mid) + getSum(rightLen, mid) - mid;
13
return curSum <= maxSum;
14
}
15
var l = 0;
16
var r = 1000000000;
17
var leftLen = index + 1;
18
var rightLen = n - index;
19
while (l < r) {
20
var mid = Math.ceil((l + r) / 2); // handle dead loop when l===r & l=mid
21
if (!isValid(mid)) {
22
r = mid - 1;
23
} else {
24
l = mid;
25
}
26
}
27
return l;
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0