class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if (nums.size() == 0) return 0;
int nLength = 1;
int nState = 0; //为1表示上升,为-1表示下降,为0表示元素不够
for (int i = 1; i < nums.size(); ++i)
{
//每次(连续)递增/递减后我只拿现在的元素和递增/递减序列的最后一个元素比较,这样最有可能达到最长摇摆子序列
if (nums[i] > nums[i - 1] && (nState == -1 || nState == 0))
{
++nLength;
nState = 1;
}
else if (nums[i] < nums[i - 1] && (nState == 1 || nState == 0))
{
++nLength;
nState = -1;
}
}
return nLength;
}
};