题目在这​​: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 0
if n == 1:
return 1
nums = [0] * (n+1)
nums[1] = 1
for 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)