1802. Maximum Value at a Given Index in a Bounded Array #
题目 #
- 给你三个正整数
n、index和maxSum。你需要构造一个同时满足下述所有条件的数组nums(下标 从 0 开始 计数):nums.length == nnums[i]是 正整数 ,其中0 <= i < nabs(nums[i] - nums[i+1]) <= 1,其中0 <= i < n-1nums中所有元素之和不超过maxSumnums[index]的值被 最大化
- 返回你所构造的数组中的
nums[index]。 - 注意:
abs(x)等于x的前提是x >= 0;否则,abs(x)等于-x。
思路 #
模拟 #
代码 #
模拟 #
class Solution {
public int maxValue(int n, int index, int maxSum) {
int k = 1; maxSum -= n;
while (true) {
int left = Math.max(index-(k-1), 0), right = Math.min(index+(k-1), n-1);
if (maxSum < right-left+1) break;
if (left == 0 && right == n-1) return k + maxSum / n;
k++;
maxSum -= right-left+1;
}
return k;
}
}