Maximum Length of Subarray With Positive Product LeetCode solution in C++
1class Solution {2public:3int getMaxLen(vector<int> &nums) {4int ans = 0;5int lprod = 1, rprod = 1;6int llen = 0, rlen = 0;7int n = nums.size();8for (int i = 0; i < n; i++) {9lprod *= nums[i] != 0 ? nums[i] / abs(nums[i]) : 0;10rprod *= nums[n - 1 - i] != 0 ? nums[n - 1 - i] / abs(nums[n - 1 - i]) : 0;11if (lprod != 0) llen++;12if (rprod != 0) rlen++;13if (lprod > 0) ans = max(ans, llen);14if (rprod > 0) ans = max(ans, rlen);15if (lprod == 0) {16lprod = 1;17llen = 0;18}19if (rprod == 0) {20rlen = 0;21rprod = 1;22}23}24return ans;25}26};