// class Solution {
// public:
// int maxProduct(vector<int>& nums) {
// vector<int> res;
// for(int i = 0;i<nums.size();i++)
// {
// int mul=1;
// for(int j=i;j<nums.size();j++)
// {
// mul*=nums[j];
// res.emplace_back(mul);
// }
// }
// sort(res.begin(),res.end());
// return res.back();
// }
// };
class Solution {
public:
int maxProduct(vector<int>& nums) {
int maxF = nums[0], minF = nums[0], ans = nums[0];
for (int i = 1; i < nums.size(); ++i) {
int mx = maxF, mn = minF;
maxF = max(mx * nums[i], max(nums[i], mn * nums[i]));
minF = min(mn * nums[i], min(nums[i], mx * nums[i]));
ans = max(maxF, ans);
}
return ans;
}
};