152. Maximum Product Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4]
,
the contiguous subarray [2,3]
has the largest product = 6
.
解题思路:当访问到a[i]时,乘积最大值的可能来源只能是之前的乘积最大值*a[i](a[i]>0,或者之前的乘积最小值*a[i](a[i]<0),或者当前值;
class Solution { public: int maxProduct(vector<int>& nums) { int mmax=nums[0],mmin=nums[0],ans=nums[0],n=nums.size(); for(int i=1;i<n;i++){ int temp1=mmax*nums[i],temp2=mmin*nums[i]; mmax=max(max(temp1,temp2),nums[i]); mmin=min(min(temp1,temp2),nums[i]); ans=max(mmax,ans); } return ans; } };