leetcode:376. 摆动序列(dp)

题目:

在这里插入图片描述

分析:

受之前的影响,刚开始想偏了。
思考:删除后,可能影响原有的升降序吗?
在这里插入图片描述
更准确的说,如上图所示,我们对元素的删除会改变这个趋势吗?会使得升降增多吗?显然不会增多,只有变少的情况。

代码1:为什么出错,1 2 2 2 3当做了两个

class Solution {
public:
    int wiggleMaxLength(vector<int>& n) {
         if(n.size()==1) return 1;
            if(n.size()==0) return 0;
 int a=0; 
 for(int i=2;i<n.size();i++)
 {
  if(n[i]>n[i-1] && !(n[i-1]>n[i-2]))
  {
   a++;
  }
  else if(n[i]<n[i-1] && !(n[i-1]<n[i-2]))
  {
   a++;
  }
 }
    a++;
    if(n[0]!=n[1]) a++;
 return a;
    }
};

大佬代码思路改变:

 vector<int> n; 
 if(n.size()==1) return 1;
    if(n.size()==0) return 0;
 int a1=0;
 int a2=0;
 for(int i=1;i<n.size();i++)
 {
  if(n[i]>n[i-1]) a1=a2+1;
  if(n[i]<n[i-1]) a2=a1+1;
 }
 return max(a1,a2)+1;

结果:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章