1802. Maximum Value at a Given Index in a Bounded Array #
题目 #
- 给你三个正整数
n
、index
和maxSum
。你需要构造一个同时满足下述所有条件的数组nums
(下标 从 0 开始 计数):nums.length == n
nums[i]
是 正整数 ,其中0 <= i < n
abs(nums[i] - nums[i+1]) <= 1
,其中0 <= i < n-1
nums
中所有元素之和不超过maxSum
nums[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;
}
}