当前位置: 代码迷 >> 综合 >> 力扣(leetcode) 1646. 获取生成数组中的最大值
  详细解决方案

力扣(leetcode) 1646. 获取生成数组中的最大值

热度:44   发布时间:2023-12-26 11:29:15.0

题目在这:https://leetcode-cn.com/problems/get-maximum-in-generated-array/

思路分析:

这道题没什么难点,题目中已经给了足够的信息,我们只需要按着写出对应程序就行
,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]

可以发现,每次循环的时候,我们都可以设置两个值,比如当i为2的时候,我们可以设置 数组下标为:2*2 = 4 和 2 *2 +1 = 5 的两个数组值,所以循环的时候只需要循环一半就够了。

完整代码:

class Solution:def getMaximumGenerated(self, n: int) -> int:if n == 0:return 0if n == 1:return 1nums = [0] * (n+1)nums[1] = 1for i in range(1,n//2 +1):if 2 <= 2 * i <= n:nums[2 * i] = nums[i]if 2 <= 2 * i + 1 <= n:nums[2 * i + 1] = nums[i] + nums[i + 1]print(nums)return max(nums)