题解 | 连续子数组的最大乘积

连续子数组的最大乘积

https://www.nowcoder.com/practice/fd8c819c07c9493887bfac8549c119f4

def maxProduct(nums):
    if not nums:
        return 0

    # 初始化最大值、最小值和结果
    max_dp = min_dp = result = nums[0]

    for i in range(1, len(nums)):
        # 如果当前数是负数,交换最大值和最小值
        if nums[i] < 0:
            max_dp, min_dp = min_dp, max_dp

        # 更新最大值和最小值
        max_dp = max(nums[i], max_dp * nums[i])
        min_dp = min(nums[i], min_dp * nums[i])

        # 更新结果
        result = max(result, max_dp)

    return result


# 输入处理
n = int(input())
nums = list(map(int, input().split()))
# 输出结果
print(maxProduct(nums))

全部评论

相关推荐

09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务