題目:
分析:
受之前的影響,剛開始想偏了。
思考:刪除後,可能影響原有的升降序嗎?
更準確的說,如上圖所示,我們對元素的刪除會改變這個趨勢嗎?會使得升降增多嗎?顯然不會增多,只有變少的情況。
代碼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;