[LeetCode]题解(python):152-Maximum Product Subarray

题目来源:

  https://leetcode.com/problems/maximum-product-subarray/


题意分析:

  给定一个数组,这个数组所有子数组都有一个乘积,那么返回最大的乘积。


题目思路:

  由于题目输入的都是整型的,所以所有的数相差获得的是最大或者最小值。那么我们同时记录可以获得的最大和最小值,每次更新。


代码(python):

class Solution(object):
    def maxProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums) == 0:
            return 0
        res = nums[0]
        ans = max_ans = min_ans = nums[0]
        i = 1
        while i < len(nums):
            tmp1,tmp2 = nums[i]*max_ans,nums[i]*min_ans
            max_ans = max(nums[i],max(tmp1,tmp2))
            min_ans = min(nums[i],min(tmp1,tmp2))
            ans = max(max_ans,ans)
            i += 1
        return ans
View Code
原文地址:https://www.cnblogs.com/chruny/p/5478317.html