class Solution { public: int wiggleMaxLength(vector<int>& nums) { if(nums.size() < 2) return nums.size(); static const int BEGIN = 0; static const int UP = 1; static const int DOWN = 2; int STATE = BEGIN; int max_len = 1;// 摇摆序列至少为1,可能是两个up,可能是两个down,还可能是up down 或者是 down up. for(int i=1; i<nums.size(); ++i) { switch(STATE) { case BEGIN: if(nums[i] > nums[i-1]) { STATE = UP; ++max_len; } else if(nums[i] < nums[i-1]) { STATE = DOWN; ++max_len; } break; case UP: if(nums[i] < nums[i-1]) { STATE = DOWN; ++max_len; } break; case DOWN: if(nums[i-1] < nums[i]) { STATE = UP; ++max_len; } break; } } return max_len; } };
Leetcode 376. 摆动序列
猜你喜欢
转载自www.cnblogs.com/randyniu/p/9333911.html
今日推荐
周排行