1. 问题描述:

给你一个整数 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 中的最大值。

示例 1:

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

示例 2:

输入:n = 2
输出:1
解释:根据规则,nums[0]、nums[1] 和 nums[2] 之中的最大值是 1

示例 3:

输入:n = 3
输出:2
解释:根据规则,nums[0]、nums[1]、nums[2] 和 nums[3] 之中的最大值是 2

提示:

  • 0 <= n <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/get-maximum-in-generated-array

2. 思路分析:

分析题目可以知道我们模拟整个数组元素的生成过程即可,需要分情况进行讨论这样根据奇数与偶数情况确定循环的次数:当n为奇数的时候那么遍历的次数为n / / 2,因为每一次循环可以生成两个数组元素,例如当n = 7的时候,那么总的元素个数为8,一开始nums[0],nums[1]已知所以总共还需要生成6个元素,所以三次循环就可以了,因为python语言for循环中是取不到右端点的所以当n为奇数的时候需要在除以2的基础上加1,因为是偶数是可以整除2的,所以当为偶数的时候循环的长度也为n // 2,但是当n为偶数的时候生成的元素长度为奇数个所以需要在循环结束之后生成数组中的最后一个元素,我们可以在生成元素的时候就比较数组元素中的最大值,对结果集进行更新即可,这种题目结合具体的例子会更好编写代码

3. 代码如下:

class Solution:def getMaximumGenerated(self, n: int) -> int:if n == 0: return 0if n == 1: return 1# 分为偶数与奇数的两种情况nums = [0] * (n + 1)res = 1nums[0], nums[1] = 0, 1length = n // 2if n % 2 != 0:# 奇数length += 1for i in range(1, length):nums[2 * i] = nums[i]nums[2 * i + 1] = nums[i] + nums[i + 1]res = max(res, nums[2 * i], nums[2 * i + 1])if n % 2 == 0: nums[n] = nums[n // 2]return max(res, nums[n])

1646 获取生成数组中的最大值(模拟)相关推荐

  1. 1646. 获取生成数组中的最大值

    1646. 获取生成数组中的最大值 给你一个整数 n .按下述规则生成一个长度为 n + 1 的数组 nums : nums[0] = 0 nums[1] = 1 当 2 <= 2 * i &l ...

  2. LeetCode 1646. 获取生成数组中的最大值

    1646. 获取生成数组中的最大值 题目:给你一个整数 n .按下述规则生成一个长度为 n + 1 的数组 nums : nums[0] = 0 nums[1] = 1 当 2 <= 2 * i ...

  3. 1646 获取生成数组中的最大值

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

  4. LeetCode——1646. 获取生成数组中的最大值

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

  5. LeetCode 1646. 获取生成数组中的最大值 Python

    题目来源:https://leetcode-cn.com/problems/get-maximum-in-generated-array/ 题目描述 给你一个整数 n .按下述规则生成一个长度为 n ...

  6. 文巾解题 1646. 获取生成数组中的最大值

    1 题目描述 2 解题思路 直接模拟 class Solution:def getMaximumGenerated(self, n: int) -> int:if(n==0):return 0i ...

  7. leetcode1646. 获取生成数组中的最大值

    题目链接:https://leetcode-cn.com/problems/get-maximum-in-generated-array/ 题意: 给你一个整数 n .按下述规则生成一个长度为 n + ...

  8. 算法--获取生成数组中的最大值(Kotlin)

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

  9. #力扣 LeetCode1646. 获取生成数组中的最大值 @FDDLC

    题目描述: https://leetcode-cn.com/problems/get-maximum-in-generated-array/ Java代码: class Solution {publi ...

最新文章

  1. java 自然语言处理_Java自然语言处理
  2. 稳压源 GPD-3303系列 控制指令笔记
  3. Kafka Zero-Copy 使用分析
  4. 在ubuntu14.04中安装搜狗输入法
  5. 支持向量机SVM算法原理及应用(R)
  6. 【CodeForces - 151D】Quantity of Strings (字符串问题,思维推导,有坑)
  7. kafka消息消费有延迟_RabbitMQ与Kafka的技术差异以及使用注意点
  8. 蔚来ET5将于2022年9月开启交付 补贴前售价32.8万元起
  9. html表单文本框作用,HTML表单的用法
  10. R的数据可视化,各种图表,常用统计量计算
  11. pthread_mutex_init 互斥锁pthread_mutex_t的使用(转)
  12. 惠普103a微信打印服务器,惠普发布微信打印小程序,丰富云打印解决方案
  13. 图像标注工具CVAT
  14. DJ编曲用什么软件,DJ编曲教需要哪些步骤
  15. HBaseCon亚洲2018峰会盛大开幕 阿里带你洞悉HBase大数据生态最新发展和行业实践
  16. JSON.parse()方法
  17. pgsql查表名_PostgreSQL如何查询所有表名
  18. 彻底解决LSASS.exe进程病毒!
  19. 2022年高处安装、维护、拆除新版试题及高处安装、维护、拆除考试试卷
  20. react兄弟组件之间的传值

热门文章

  1. 数仓的基本概念【精】
  2. 王道OS-磁盘存储器管理
  3. 如何修改PDF文件内容,PDF怎么编辑页眉页脚
  4. 通过源码理解 vue beforecreated 周期与 created 周期之间发生了什么
  5. NBUT - 1225~NEW RDSP MODE I(快速幂+倒推)
  6. 最新软件设计师知识点分析(思维导图)
  7. 公众号资源分享欢迎关注
  8. 风影ASP.NET基础教学 2 web服务器控件
  9. 倒计时(小时:分钟:秒钟)【JS原生代码】
  10. 《机器学习算法竞赛实战》整理 | 八、实战案例:Elo Merchant Category Recommendation