视频讲解
子数组最大乘积
http://www.nowcoder.com/questionTerminal/9c158345c867466293fc413cff570356
视频连接:https://www.bilibili.com/video/BV1kN411R7Vg/
#
#
# @param arr double浮点型一维数组
# @return double浮点型
#
class Solution:
def maxProduct(self , arr ):
n = len(arr)
# 初始化 最大 最小 dp数组
max_dp = [1.0]*n
min_dp = [1.0]*n
# 赋初值
min_dp[0] = arr[0]
max_dp[0] = arr[0]
total = arr[0]
for i in range(1, n):
if arr[i] > 0:
# 正*正 = 正
max_dp[i] = max(arr[i], max_dp[i-1]*arr[i])
# 负*正= 负
min_dp[i] = min(arr[i], min_dp[i-1]*arr[i])
else:
# 负*负=正
max_dp[i] = max(arr[i], min_dp[i-1]*arr[i])
# 正*负=负
min_dp[i] = min(arr[i], max_dp[i-1]*arr[i])
total = max(total, max_dp[i])
return total
CVTE公司福利 672人发布