贪心
时间复杂度 O(n) 空间复杂度 O(1)
class Solution {
public:
int wiggleMaxLength(vector<int>& a) {
if(!a.size()) return 0;
if(a.size() == 1) return 1;
//flag = "0, 1, 2"分别表示序列之前的状态为“持平,上升, 下降”
int flag = 0;//设置序列初始状态为“持平”
int res = 1;
for(int i = 1; i < a.size(); i++) {
//如果状态改变,说明折线有拐角,序列摆动一次,并设置此时折线新的状态
if(a[i] > a[i-1]) {
if(flag != 1) res++, flag = 1;
}else if(a[i] < a[i-1]) {
if(flag != 2) res++, flag = 2;
}
}
return res;
}
};