码迷,mamicode.com
首页 > 其他好文 > 详细

152 Maximum Product Subarray

时间:2015-07-08 00:27:56      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:

这道题使用dp。 dpMax[i] = max(nums[i], nums[i]*dpMax[i-1], nums[i]*dpMin[i-1]) 

多记录一个        dpMin[i] = min(nums[i], nums[i]*dpMax[i-1], nums[i]*dpMin[i-1]) 

但是空间上不需要记录所有的dpMax和dpMin,因此只需要currentMax,和currentMin记录当前的值。

总的复杂度时间O(n), 空间O(1)

class Solution:
    # @param {integer[]} nums
    # @return {integer}
    def maxProduct(self, nums):
        i = 0
        currentMax, currentMin, ans = nums[0], nums[0], nums[0]
        for i in range(1, len(nums)):
            n = nums[i]
            tmp = currentMax
            currentMax = max(n, n*currentMax, n*currentMin)
            currentMin = min(n, n*tmp, n*currentMin)
            ans = max(ans, currentMax)
        return ans

 

152 Maximum Product Subarray

标签:

原文地址:http://www.cnblogs.com/dapanshe/p/4628875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!