获得生成数组中的最大值

Leetcode 1646.获得生成数组中的最大值

题目描述

给你一个整数n。按下述规则生成一个长度为n+1的数组nums:
nums[0]=0,nums[1]=1。
当2<=2i<=n时,nums[2i]=nums[i];
当 2<=2i+1<=n时,nums[2i+1]=nums[i]+nums[i+1]。

返回生成数组nums中的最大值。

题解:

因为数组范围1-100,直接打表记录即可。

class Solution {
public:
    int getMaximumGenerated(int n){
        vector<int>nums(101);
        nums[0]=0,nums[1]=1;
        for(int i=2;i<=100;i++){
            if(i%2==0) nums[i]=nums[i/2];
                else nums[i]=nums[i/2]+nums[i/2+1];
        }
        int ans=INT_MIN;
        //for(auto i:nums) cout<<i<<",";
        for(int i=0;i<=n;i++) 
            ans=max(ans,nums[i]);
            return ans;
    }
};
posted @ 2021-11-15 22:13  Chilyyy  阅读(43)  评论(0)    收藏  举报