假如给出一组图要判断最长摆动序列 规律是 起点结束点和 前后位置有落差的转折点
这转折点的条件是 当前位置数与前面一个数的差 与 后一个位置与当前位置的差的乘积得小于0
从第一个位置开始依次遍历到倒数第二个数看看哪些点是转折点 然后记得把结束点位置加上 (就是+1)就行
第一个位置的left =0 right=nums[1]-[0] left*right<=0即可为转折点
(等于0是因为要把起始点算上)
循环进入第二个位置 left =第一个位置的right right=nums[2]-nums[1]
然后依次循环到倒数第二个位置
还有种特殊情况 nums.size() <2 直接返回 nums.size()
- class Solution
- {
- public:
- int wiggleMaxLength(vector<int>& nums)
- {
- int n=nums.size();
- int ret=0,left=0;
- if(n<2) return n;
-
- for(int i=0;i
-1;i++) - {
- int right=nums[i+1]-nums[i];
- if(right==0) continue;
- if(right*left<=0) ret++ ;
- left=right;
- }
- return ret+1;
-
- }
- };