感覺好像沒有很漂亮但是也沒有不行吧 XD(自我安慰)
最開頭要做初始是up or down 的檢查,最後回傳up跟down 互換了幾次再加一!因為是回傳node 數.
int wiggleMaxLength(int* nums, int numsSize){
if (numsSize==1)
return 1;
bool isUp=(nums[1]> nums[0])? true:false;
int count=1, i;
for (i=1;i < numsSize;i++)
{
if (nums[i]!=nums[i-1])
{
isUp=(nums[i]> nums[i-1])? true:false;
break;
}
}
if (i==numsSize)
return count;
for (int i=1;i < numsSize;i++)
{
bool pre = isUp;
if (nums[i]> nums[i-1])
isUp=true;
else if (nums[i] < nums[i-1])
isUp=false;
else
continue;
if ((pre == true && !isUp) || (pre == false && isUp))
count++;
}
return count+1;
}
沒有留言:
張貼留言