public int maxValue(int n, int index, int maxSum) {
int left = 1, right = maxSum;
while (left < right) {
int mid = (left + right + 1) >>> 1;
if (sum(mid - 1, index) + sum(mid, n - index) <= maxSum) {
left = mid;
} else {
right = mid - 1;
}
}
return left;
}
private long sum(long x, int cnt) {
return x >= cnt ? (x + x - cnt + 1) * cnt / 2 : (x + 1) * x / 2 + cnt - x;
}
2023.1.4-----leetcode.1802
最新推荐文章于 2024-05-22 20:19:20 发布