class Solution {
public:
int getMaxLen(vector<int>& nums) {
int m=0;
int ma=0;
if(!nums.size()) return 0;
int pre=nums[0];
if(pre>0)
{
ma=1;
}
for(int i=1;i<nums.size();i++)
{
if(pre&&nums[i])
{
if(pre>0&&nums[i]>0||pre<0&&nums[i]<0)
{
pre=1;
}
else{
pre=-1;
}
if(pre>0)
{
ma=max(ma,i-m+1);
}
}
else
{
pre=nums[i];
m=i;
}
}
int l=nums.size()-1;
m=l;
pre=nums[l];
int lma=0;
for(int i=l-1;i>=0;i--)
{
if(pre&&nums[i])
{
if(pre>0&&nums[i]>0||pre<0&&nums[i]<0)
{
pre=1;
}
else{
pre=-1;
}
if(pre>0)
{
lma=max(lma,m+1-i);
}
}
else
{
pre=nums[i];
m=i;
}
}
int t=0;
for(int i=0;i<l+1;i++)
{
if(nums[i]>0)
{
t=1;
break;
}
}
return max(ma,max(t,lma));
}
};
做是做出来了,可是显而易见。
跟动态规划一点关系都没有T.T
唉,至少没有抄答案了吧。
看答案去了。
加油。