题解 | #子数组最大乘积#
子数组最大乘积
http://www.nowcoder.com/practice/9c158345c867466293fc413cff570356
# # # @param arr double浮点型一维数组 # @return double浮点型 # class Solution: def maxProduct(self , arr ): # write code here #由于本题空间复杂度为O(1),故不能创建dp数组,保存状态即可 maxP = arr[0] #最大乘积,初始化为数组第一个元素较合理 state = 0 #只用一个变量保存状态即可 for i in range(len(arr)): #当区间只有一个元素时,初始化State state = arr[i] maxP = max(maxP,state) for j in range(i+1,len(arr)): #当区间有多个元素时,使用递归公式:dp[i][j] = dp[i][j-1]*arr[j] state = state*arr[j] maxP = max(maxP,state) return maxP