题目描述:
示例 1:
示例 2:
示例 3:
题目分析:
- nums[0] = 0, nums[1] = 1
- 当1 < n时,假设i为数组nums索引
- i为偶数时,nums[i] = nums[i / 2]
- i为奇数时,nums[I] = nums[(i - 1) / 2] + nums[(i + 1) / 2]
思路:
代码实现:
class Solution {
public int getMaximumGenerated(int n) {
if (n == 0) return 0;
int[] dp = new int[n + 1];
dp[0] = 0; // 初始化索引0,1的元素
dp[1] = 1;
int maxNum = 1;
for (int i = 2; i <= n; i++) {
if (i % 2 == 0) { // i为偶数时
dp[i] = dp[i / 2];
} else { // i为奇数时
dp[i] = dp[(i - 1) / 2] + dp[(i + 1)/ 2];
}
if (dp[i] > maxNum) maxNum = dp[i]; // 判断是否是最大元素
}
return maxNum;
}
}