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;
}
}