
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.
int maxProduct(int A[], int n) { int res = A[0]; int maxProduct = A[0]; int minProduct = A[0]; for(int i=1; i<n; i++){ if(A[i] >= 0){ maxProduct = max(maxProduct*A[i],A[i]); minProduct = min(minProduct*A[i],A[i]); } else{ int temp = maxProduct; maxProduct = max(minProduct*A[i],A[i]); minProduct = min(temp*A[i],A[i]); } res = max(res,maxProduct); } return res;}
//Approach 2:
int maxProduct(int A[], int n) { int res = A[0]; int maxProduct = A[0]; int minProduct = A[0]; for(int i=1; i<n; i++){ int temp = maxProduct; //A[i]<0,minProduct*A[i]可能最大 maxProduct = max(max(maxProduct*A[i],A[i]),minProduct*A[i]); minProduct = min(min(temp*A[i],A[i]),minProduct*A[i]); res = max(maxProduct,res); } return res;}




近期评论