0
点赞
收藏
分享

微信扫一扫

获取生成数组中的最大值

诗与泡面 2021-09-21 阅读 87
今日算法
题目描述:
示例 1:
示例 2:
示例 3:
题目分析:
  1. nums[0] = 0, nums[1] = 1
  2. 当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; 
    }
}
举报

相关推荐

0 条评论