Maximum Product Subarray LeetCode solution in C++
1class Solution {2public:3int maxProduct(vector<int> &nums) {4int n = nums.size();5int negPro = 1;6int posPro = 1;7int CHECK_ZERO = 0;8int res = INT_MIN;9for (int i = 0; i < n; i++) {10if (nums[i] == 0) {11posPro = 1;12negPro = 1;13CHECK_ZERO = 1;14}15int numPos = posPro * nums[i];16int numNeg = negPro * nums[i];17posPro = max(numPos, max(numNeg, nums[i]));18negPro = min(numPos, min(numNeg, nums[i]));19res = max(posPro, res);20}21return (CHECK_ZERO ? max(0, res) : res);22}23};