算法题每日一练---第43天:获取生成数组中的最大值

简介: 给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums :

3.png

一、问题描述


给你一个整数 n 。按下述规则生成一个长度为 n + 1 的数组 nums :

  • nums[0] = 0
  • nums[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 中的 最大 值。


题目链接:获取生成数组中的最大值


二、题目要求


样例

输入:n=7输出:3解释:根据规则:nums[0] =0nums[1] =1nums[(1*2) =2] =nums[1] =1nums[(1*2) +1=3] =nums[1] +nums[2] =1+1=2nums[(2*2) =4] =nums[2] =1nums[(2*2) +1=5] =nums[2] +nums[3] =1+2=3nums[(3*2) =6] =nums[3] =2nums[(3*2) +1=7] =nums[3] +nums[4] =2+1=3因此,nums= [0,1,1,2,1,3,2,3],最大值3


考察

动态规划中等题型
建议用时15~30min


三、问题分析


还是用我们的三步走,老套路:


第一步 含义搞懂:

利用数字的奇偶性寻找性质,作为动态规划的切入口。

题目中dp[i]就代表第i个数字的值。


第二步 变量初始:

初始变量,原题描述给了,分别是:

dp[0]=0;
dp[1]=1;


第三步 规律归纳:

题目虽然说2 * i、2*i+1的关系,我们反过来想,其实就是:

  • 若 i 为偶数,dp[i]=dp[i/2];
  • 若 i 为奇数,dp[i]=dp[i/2]+dp[i/2+1];

三步走,打完收工!


四、编码实现


classSolution {
public:
intgetMaximumGenerated(intn) {
inti,dp[n+2],m;//初始化if(n==0) return0;//只有一个,返回0if(n==1) return1;//返回1dp[0]=0,dp[1]=1,m=1;//变量初始for(i=2;i<=n;i++)
        {
if(i%2==0)
           {
dp[i]=dp[i/2];//规律归纳           }
elsedp[i]=dp[i/2]+dp[i/2+1];//规律归纳m=max(m,dp[i]);
        }
returnm;输出结果    }
};


五、测试结果


30.png

相关文章
|
18天前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
36 0
|
2月前
|
算法 测试技术
【算法】二分算法——寻找旋转排序数组中的最小值
【算法】二分算法——寻找旋转排序数组中的最小值
|
2月前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
11天前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
16 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
11天前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
15 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
6天前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
17 0
|
2月前
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
2月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
2月前
|
算法
【算法】模拟算法——外观数组(medium)
【算法】模拟算法——外观数组(medium)
|
2月前
|
算法
【算法】前缀和——除自身以外数组的乘积
【算法】前缀和——除自身以外数组的乘积