题目来源:
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