注册csdn有一段时间了,还是习惯用笔记记录。今天第一次写博客。。
本人c++菜鸡一个,你要是问我的代码为什么这么长?我也不知道。反正就是这么长
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()==1)
return 1;
if(nums.empty())
return 0;
map<int,int> m1;
for(int i=0;i<nums.size();i++)
{
++m1[nums[i]];
}
if(m1.size()==1)
return 1;
int a=0,b=next(nums,a);int n=nums.size()-1;
int res=nums[n-1];
int length=1;
while(nums[n]==nums[n-1])
{
n--;
}
while(b!=n)
{
if(nums[b]-nums[a]>0)
{
b=next(nums,b);
a=next(nums,a);
length+=big(nums[a],nums[b]);
}
else
{
b=next(nums,b);
a=next(nums,a);
length+=small(nums[a],nums[b]);
}
}
return length+1;
}
int next(vector<int> v,int a)
{
int temp=a;
if(v[a]!=v[++a])
return a;
a--;
while(v[a]==v[++temp])
{
}
return temp;
}
bool big(int n1,int n2)
{
if(n1>n2)
return true;
else
return 0;
}
bool small(int n1,int n2)
{
if(n1<n2)
return true;
else
return 0;
}
};