#include <algorithm>
#include <vector>
class Solution {
public:
//我觉得这题最离谱的是数据量好大
    int maxProduct(vector<int>& nums) {
        // write code here
       int n = nums.size();
        int ans = nums[0];
        int preMax = nums[0];
        int preMin = nums[0];
        for(int i = 1; i < n; i++){
            int t = preMax;
            preMax = max(nums[i] * preMax,max(preMin * nums[i], nums[i]));
            preMin = min(nums[i] * t,min(preMin * nums[i], nums[i]));
            ans = max(ans, preMax);
        } 
        return ans;
    }
};