题目:
分析:
受之前的影响,刚开始想偏了。
思考:删除后,可能影响原有的升降序吗?
更准确的说,如上图所示,我们对元素的删除会改变这个趋势吗?会使得升降增多吗?显然不会增多,只有变少的情况。
代码1:为什么出错,1 2 2 2 3当做了两个
class Solution {
public:
int wiggleMaxLength(vector<int>& n) {
if(n.size()==1) return 1;
if(n.size()==0) return 0;
int a=0;
for(int i=2;i<n.size();i++)
{
if(n[i]>n[i-1] && !(n[i-1]>n[i-2]))
{
a++;
}
else if(n[i]<n[i-1] && !(n[i-1]<n[i-2]))
{
a++;
}
}
a++;
if(n[0]!=n[1]) a++;
return a;
}
};
大佬代码思路改变:
vector<int> n;
if(n.size()==1) return 1;
if(n.size()==0) return 0;
int a1=0;
int a2=0;
for(int i=1;i<n.size();i++)
{
if(n[i]>n[i-1]) a1=a2+1;
if(n[i]<n[i-1]) a2=a1+1;
}
return max(a1,a2)+1;