1646. 获取生成数组中的最大值
贴个题目:
贴个示例:
解题思路:
这一道题目,乍看还以为有什么数学规律,后来才发现利用题目中的条件进行模拟就好,在模拟过程中,使用一个max
但是根据官方题解:官方题解:1646. 获取生成数组中的最大值
我们可以把题目条件进行化简,贴一个图片:
理解应该是没问题的,实现代码在官方题解中有提到,就不赘述。
贴个代码:
int getMaximumGenerated(int n){
if(n==0) return 0;
int nums[n+1];
nums[0]=0;
nums[1]=1;
int max=nums[1];
for(int i=0;2*i<n+1;i++)
{
if(2*i<=n&&2*i>=2)
{
nums[2*i]=nums[i];
max=fmax(nums[2*i],max);
}
if(2*i+1<=n&&2*i+1>=2)
{
nums[2*i+1]=nums[i]+nums[i+1];
max=fmax(nums[2*i+1],max);
}
}
return max;
}
性能分析:
时间分析:
这里是用了一次遍历,所以时间复杂度是:O(n)
空间分析:
新建了一个长度为n+1的数组,因此空间复杂度是:O(n)