Very Short and Easy Cpp Solution O(N) time & O(1) space


#1
int Solution::maxProduct(const vector<int> &A) {
    int maxval=A[0],minval=A[0],max_prod=A[0];
    for(int i=1;i<A.size();i++)
    {
        if(A[i]<0) swap(maxval,minval);
        maxval=max(A[i],maxval*A[i]);
        minval=min(A[i],minval*A[i]);
        max_prod=max(max_prod,maxval);
    }
    return max_prod;
}