题解 | 连续子数组的最大乘积
连续子数组的最大乘积
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))
查看18道真题和解析