LeetCode 1567. Maximum Length of Subarray With Positive Product
原题链接
中等
作者:
孤独时代的罗永浩
,
2020-10-06 12:25:24
,
所有人可见
,
阅读 527
没有啥算法就是模拟,遍历过程中要记录一些数据, 当前负数出现的个数,当前0所在位置,
第一个正数位置,第一个负数位置
每次都要更新最大结果,如果当前出现负数的个数是奇数个,那么当前区间的左端点是第一个负数的位置
否则左端点是0所在位置
class Solution {
public:
int getMaxLen(vector<int>& nums) {
int positive = INT_MAX, negative = INT_MAX;
int cnt = 0;
int ans = 0;
int zero = -1;
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] == 0)
{
positive = INT_MAX;
negative = INT_MAX;
zero = i;
cnt = 0;
continue;
}
if(nums[i] > 0)
{
positive = min(positive, i);
}
if(nums[i] < 0)
{
negative = min(negative, i);
cnt++;
}
if(cnt % 2 == 0)
ans = max(ans, i - zero);
else
ans = max(ans, i - negative);
}
return ans;
}
};