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

子数组最大乘积

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

相关推荐

不愿透露姓名的神秘牛友
06-24 20:25
腾讯今年实习招了这么多人,后面秋招还会招人吗??想着秋招再战来着
牛客96559368...:腾讯好像2020年之后就是实习生招得多,应届生基本上不招,纯实习转正
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务