python-leetcode-1646. 获取生成数组中的最大值

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

需要生成一个整数数组 nums,其中的元素遵循以下规则:

  1. nums[0] = 0

  2. nums[1] = 1

  3. 对于每个整数 i,如果 2 * i <= n,则 nums[2 * i] = nums[i]

  4. 如果 2 * i + 1 <= n,则 nums[2 * i + 1] = nums[i] + nums[i + 1]

目标是返回生成的数组 nums 中的最大值。

解题步骤:

  1. 初始化数组 nums,其长度为 n + 1,并设置 nums[0] = 0nums[1] = 1

  2. i = 1 开始,按上述规则填充 nums 数组。

  3. 计算数组中的最大值并返回。

代码实现:

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] = 0nums[1] = 1 是已知的初始值。

  • 对于每个 i,我们根据规则填充 nums[2 * i]nums[2 * i + 1],确保不超过数组长度 n

  • 最后,我们返回数组中的最大值。

示例:

假设输入 n = 7,生成的数组为:

nums = [0, 1, 1, 2, 1, 3, 2, 3]

最大值是 3,因此返回 3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值