摆动序列
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
//贪心算法
int len = nums.size();
if (len == 1)
return 1;
else if (len == 0)
return 0;
vector<int> flags;
flags.push_back(10);
//这里存储每两个数字的差值,记录波动
for (int i = 1; i<len; ++i)
{
if (nums[i - 1]>nums[i])
flags.push_back(-1);
else if (nums[i - 1] == nums[i])
flags.push_back(0);
else
flags.push_back(1);
}
int result = flags[1] == 0 ? 1 : 2;
int fl=flags[1];//这里因为当波动性为0的时候需要存储上次的波动值
for (int j = 2; j<len; ++j)
{
if (flags[j] == 0)
{
fl=flags[j-1];
continue;
}
if (fl != flags[j])
{
++result;
}
fl=flags[j];
}
return result;
}
};