classSolution{public:intwiggleMaxLength(vector<int>& nums){int n = nums.size();if(n ==1)return n;int up =1, down =1;for(int i =1; i < n; i++){if(nums[i]> nums[i -1]){
up = down +1;}elseif(nums[i]< nums[i -1]){
down = up +1;}}returnmax(up, down);}};
4. 代码实现(贪心)
classSolution{public:intwiggleMaxLength(vector<int>& nums){int n = nums.size();// 记录当前差值与上一个差值int cur =0;int pre =0;int cnt =1;for(int i =1; i < n; i++){int cur = nums[i]- nums[i -1];if((cur >0&& pre <=0)||(cur <0&& pre >=0)){// 符合摆动的条件
pre = cur;
cnt++;}}return cnt;}};