思路
记录前一个差值和后一个差值,需要分析很多情况
- 只有在发生波动的时候才更新差值——单调中有平坡
- 前一个差值==0时也更新差值——平坡留下最左边元素
- 最后一个元素不记录.默认从最后一个有坡度
代码
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
int res = 1;
int preDiff = 0;
for(int i = 0; i < nums.size() - 1; i++){
int curDiff = nums[i + 1] - nums[i];
if(preDiff <= 0 && curDiff > 0 || preDiff >= 0 && curDiff < 0){
res++;
preDiff = curDiff;
}
}
return res;
}
};