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



需要生成一个整数数组 nums,其中的元素遵循以下规则:
-
nums[0] = 0 -
nums[1] = 1 -
对于每个整数
i,如果2 * i <= n,则nums[2 * i] = nums[i] -
如果
2 * i + 1 <= n,则nums[2 * i + 1] = nums[i] + nums[i + 1]
目标是返回生成的数组 nums 中的最大值。
解题步骤:
-
初始化数组
nums,其长度为n + 1,并设置nums[0] = 0和nums[1] = 1。 -
从
i = 1开始,按上述规则填充nums数组。 -
计算数组中的最大值并返回。
代码实现:
def getMaxGenerated(n):
if n == 0:
return 0
elif n == 1:
return 1
nums = [0] * (n + 1)
nums[0] = 0
nums[1] = 1
for i in range(1, n // 2 + 1):
if 2 * i <= n:
nums[2 * i] = nums[i]
if 2 * i + 1 <= n:
nums[2 * i + 1] = nums[i] + nums[i + 1]
return max(nums)
# 测试
print(getMaxGenerated(7)) # 输出结果是 3
解释:
-
nums[0] = 0和nums[1] = 1是已知的初始值。 -
对于每个
i,我们根据规则填充nums[2 * i]和nums[2 * i + 1],确保不超过数组长度n。 -
最后,我们返回数组中的最大值。
示例:
假设输入 n = 7,生成的数组为:
nums = [0, 1, 1, 2, 1, 3, 2, 3]
最大值是 3,因此返回 3。
1400

被折叠的 条评论
为什么被折叠?



