1802. Maximum Value at a Given Index in a Bounded Array

1802. Maximum Value at a Given Index in a Bounded Array #

题目 #

  • 给你三个正整数 nindexmaxSum 。你需要构造一个同时满足下述所有条件的数组 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;
    }
}