0%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Solution: def maxValue(self, n: int, index: int, maxSum: int) -> int: lo, hi, ans = 1, maxSum - n + 1, 1 while lo <= hi: mid = (lo + hi) // 2 s = 0 if mid > index: s = (index + 1) * (mid - index + mid) // 2 else: s = mid * (1 + mid) // 2 + index + 1 - mid rightSize = n - index - 1 if mid > rightSize: s += rightSize * (mid - 1 + mid - 1 - (rightSize - 1)) // 2 else: s += (mid - 1) * (1 + mid - 1) // 2 + rightSize - (mid - 1) if s > maxSum: hi = mid - 1 else: ans = mid lo = mid + 1 return ans
|