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

子数组最大乘积

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

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务