1646. Get Maximum in Generated Array

1646. Get Maximum in Generated Array #

题目 #

  • 给定一个整数n,按下述规则生成一个长度为n+1的数组nums
    • nums[0] = 0
    • num[1] = 1
    • 2 <= 2 * i <= n 时,nums[2 * i] = nums[i]
    • 2 <= 2 * i + 1 <= n 时,nums[2 * i + 1] = nums[i] + nums[i + 1]
  • 返回生成数组 nums 中的最大值。

思路 #

模拟 #

打表 #

代码 #

模拟 #

class Solution {
    public int getMaximumGenerated(int n) {
        if (n == 0) return 0;
        int[] array = new int[n + 1];
        for (int i = 2; i <= n; i++) {
            if (i % 2 == 0) array[i] = array[i/2];
            else array[i] = array[(i-1)/2] + array[(i-1)/2+1];
        }
        int ans = -1;
        for (int num: array) ans = Math.max(ans, num);
        return ans;
    }
}

致谢 #

宫水三叶