Description


Submission
class Solution {
public:
int getMaxLen(vector<int>& nums) {
for(int i = 0; i < nums.size(); ++i) {
if(nums[i] > 0) nums[i] = 1;
if(nums[i] < 0) nums[i] = -1;
}
int leftPos = -1, leftNeg = -1, cur = 1;
int ret = 0;
for(int i = 0; i < nums.size(); ++i) {
cur *= nums[i];
if(cur == 0) {
cur = 1;
leftPos = i;
leftNeg = -1;
continue;
}
if(cur > 0 ) {
if(leftPos == -1) ret = max(i - leftPos, ret);
else ret = max(i - leftPos, ret);
}
if(cur < 0) {
if(leftNeg == -1) leftNeg = i;
else ret = max(i - leftNeg, ret);
}
}
return ret;
}
};
