您的位置:首页 > 产品设计 > UI/UE

Wiggle Subsequence

2016-07-25 17:23 344 查看
 注意两个点:

1.正负数的判断用乘法,小于0就说明两个数异号

2.两个数相等,wiggle Subsequence的长度减1

3.读题没读清楚,[1,17,5,10,13,15,10,5,16,8]-->[1,17,10,13,10,16,8],其中5,15,5可以删掉,之前一直以为必须是连续的才行,所以我把这个数组分成了三个wiggle Subsequence,然后挑了一个最大的

class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int len = nums.size();
if(len <= 1){
return len;
}

vector<int> wiggle(len-1,0);
int wiggle_len = len ;
int j = 0;
for(int i = 1; i < len; i++){
int num = nums[i] - nums[i - 1];
if(num != 0){
wiggle[j] = num;
j++;
}
if(num == 0){
wiggle_len--;
}
}

for(int k = 0; k < j-1 ; k++){
if(wiggle[k] * wiggle[k+1] > 0 ){
wiggle_len--;
}
}

return wiggle_len;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: