int wiggleMaxLength(vector<int>& nums) {
if(nums.size() < 2)
return nums.size();
vector<int> dp1(nums.size(), 0);
vector<int> dp2(nums.size(), 0);
dp1[0] = 1;
dp2[0] = 1;
for(int i=1; i<nums.size(); i++)
{
if(nums[i] > nums[i-1])
{
dp1[i] = dp2[i-1] + 1;
dp2[i] = dp2[i-1];
}
else if(nums[i] < nums[i-1])
{
dp2[i] = dp1[i-1] + 1;
dp1[i] = dp1[i-1];
}
else
{
dp2[i] = dp2[i-1];
dp1[i] = dp1[i-1];
}
}
return (dp1[nums.size()-1] > dp2[nums.size()-1] ? dp1[nums.size()-1] : dp2[nums.size()-1]);
}
if(nums.size() < 2)
return nums.size();
vector<int> dp1(nums.size(), 0);
vector<int> dp2(nums.size(), 0);
dp1[0] = 1;
dp2[0] = 1;
for(int i=1; i<nums.size(); i++)
{
if(nums[i] > nums[i-1])
{
dp1[i] = dp2[i-1] + 1;
dp2[i] = dp2[i-1];
}
else if(nums[i] < nums[i-1])
{
dp2[i] = dp1[i-1] + 1;
dp1[i] = dp1[i-1];
}
else
{
dp2[i] = dp2[i-1];
dp1[i] = dp1[i-1];
}
}
return (dp1[nums.size()-1] > dp2[nums.size()-1] ? dp1[nums.size()-1] : dp2[nums.size()-1]);
}