leetcode 376

利用贪心思想,每次都得到到当前数最长的长度,和与当前数链接的前一个数之间差的符号

 1 class Solution {
 2 public:
 3     int wiggleMaxLength(vector<int>& nums) {
 4         if(nums.size()<=2)return nums.size();
 5         vector<int>temp(nums.size(),0);
 6         vector<int>flag(nums.size(),0);
 7         for(int i=1;i<nums.size();i++){
 8              int max;
 9              for(int j=0;j<i;j++) {
10                  if(j==0){
11                      flag[i]=(nums[i]-nums[0])>0?1:-1;
12                      max=2;
13                      continue;
14                  }
15                  if(nums[i]-nums[j]>0&&flag[j]<0&&max<temp[j]+1) {
16                      flag[i]=1;
17                      max=temp[j]+1;
18                  }
19                  if(nums[i]-nums[j]<0&&flag[j]>0&&max<temp[j]+1) {
20                       flag[i]=-1;
21                       max=temp[j]+1;
22                  }
23              }
24              temp[i]=max;
25         }
26         int ok=0;
27         for(int i=0;i<nums.size();i++)
28          if(ok<temp[i])
29          ok=temp[i];
30          return ok;
31     }
32 };
原文地址:https://www.cnblogs.com/thefirstfeeling/p/5691500.html