一二三四五 上山打老虎

经典DP-摆动序列最大子序列长度

链接:https://leetcode-cn.com/problems/wiggle-subsequence/
思路:DP有分两种状态来考虑:当前是上升的状态能构成的子序列长度,当前是下降的状态构成子序列长度
可以滚动数组优化为两个元素来表示

代码:

class Solution {
public:
    int wiggleMaxLength(vector<int>& n) {
        short d=1,p=1;
        for(int i=1;i<n.size();i++){
            if(n[i-1]>n[i])d=p+1;
            else if(n[i-1]<n[i]) p=d+1;
        }
        return max(d,p);
    }
};
//输入:nums = [1,7,4,9,2,5]
//输出:6
//解释:整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3) 。
posted @ 2021-07-18 21:54  黒川川  阅读(90)  评论(0)    收藏  举报