problem:https://leetcode.com/problems/maximum-product-subarray
Similar to trading stocks, we need to maintain two states, the current maximum number and minimum number.
class Solution { public: int maxProduct(vector<int>& nums) { int res = INT_MIN; int num_max = 1; int num_min = 1; for(int i = 0;i<nums.size();i++) { int a = num_max * nums[i]; int b = num_min * nums[i]; num_max = max({a, b, nums[i]}); num_min = min({a, b, nums[i]}); res = max (a, num_max); } Return res; } };