题解 | #子数组最大乘积#

子数组最大乘积

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
全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务