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

连续子数组的最大乘积

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

import sys

# for line in sys.stdin:
#     a = line.split()
#     print(int(a[0]) + int(a[1]))
n = int(input())
nums = list(map(int,input().split()))
dp_min,dp_max = [0]*(n+1),[0]*(n+1)
res = -9999
if n ==1:
    print(nums[0])
    exit()
for i in range(0,n):
    if  i == 0:
        dp_max[0] = dp_min[0] = nums[0]
    else:
        dp_max[i] = max(dp_max[i-1]*nums[i],nums[i],dp_min[i-1]*nums[i])
        dp_min[i] = min(dp_max[i-1]*nums[i],nums[i],dp_min[i-1]*nums[i])
    res = max(dp_max[i],dp_min[i],res)
print(res)

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务