思路是在解题社区中看到的,最大摆动序列的长度 = 序列曲线图中上升下降的次数+1;
贴上Java Code;
class Solution {
public int wiggleMaxLength(int[] nums) {
if(nums.length<2) return nums.length;
int minus = nums[1]-nums[0];
int cnt = minus == 0 ? 1 : 2;
int up = minus;
boolean start = minus == 0 ? false : true;
for(int i = 2; i < nums.length; i++) {
minus = nums[i] - nums[i-1];
if(!start && minus != 0) {
start = true;
up = minus;
cnt++;
}
if(minus > 0 && up < 0) {
up = minus;
cnt++;
}
if(minus < 0 && up > 0) {
up = minus;
cnt++;
}
}
return cnt;
}
}