int wiggleMaxLength(int* nums, int numsSize) {
int i, length, STATE;
length = 1;
STATE = 0;
const int BEGIN = 0;
const int UP = 1;
const int DOWN = 2;
if (numsSize == 0)
return 0;
if (numsSize == 1)
return 1;
for (i = 1; i < numsSize; i++)
{
switch (STATE)
{
case 0:
if (nums[i] > nums[i - 1])
{
STATE = UP;
length++;
}
else if (nums[i] < nums[i - 1])
{
STATE = DOWN;
length++;
}
break;
case 1:
if (nums[i] > nums[i - 1])
STATE = UP;
else if (nums[i] < nums[i - 1])
{
STATE = DOWN;
length++;
}
break;
case 2:
if (nums[i] < nums[i - 1])
STATE = DOWN;
else if (nums[i] > nums[i - 1])
{
STATE = UP;
length++;
}
break;
}
}
return length;
}