您的位置:首页 > 其它

leetcode 376

2016-07-21 13:54 323 查看
利用贪心思想,每次都得到到当前数最长的长度,和与当前数链接的前一个数之间差的符号

class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()<=2)return nums.size();
vector<int>temp(nums.size(),0);
vector<int>flag(nums.size(),0);
for(int i=1;i<nums.size();i++){
int max;
for(int j=0;j<i;j++) {
if(j==0){
flag[i]=(nums[i]-nums[0])>0?1:-1;
max=2;
continue;
}
if(nums[i]-nums[j]>0&&flag[j]<0&&max<temp[j]+1) {
flag[i]=1;
max=temp[j]+1;
}
if(nums[i]-nums[j]<0&&flag[j]>0&&max<temp[j]+1) {
flag[i]=-1;
max=temp[j]+1;
}
}
temp[i]=max;
}
int ok=0;
for(int i=0;i<nums.size();i++)
if(ok<temp[i])
ok=temp[i];
return ok;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: