您的位置:首页 > 产品设计 > UI/UE

Wiggle Subsequence

2016-07-26 15:17 459 查看
java编写

规律发现只需要扫过一遍数组,状态不同则加入一个点(也就是数量加1)

四个状态,state==3(这是用于起始刚进入循环,算是不确定状态,用来判断起始是上升还是下降)state==1之前是上升状态这时在下降就把点加进去,-1之前是下降状态这时再上升就把点加进去,0就不动

public class WiggleSubsequence {

public int wiggleMaxLength(int[] nums) {
if(nums.length==2&&nums[0]==nums[1]){
return 1;
}
if(nums.length==2&&(nums[0]!=nums[1])){
return 2;
}
int state=3;//不确定状态 1上升 -1 下降 0 平稳

int max=0;
for(int i=1;i<nums.length;i++){
if(state==2){
if(nums[i]-nums[i-1]>0){
state=1;
max=2;
continue;
}
if(nums[i]-nums[i-1]<0){
state = -1;
max=2;
continue;
}
else {
state=0;
max=1;
continue;
}
}
if(state==1){
if(nums[i]<nums[i-1]){
max++;
state=-1;
continue;
}
else{
continue;
}
}
if(state == 0){//遇到前后两个相同的数
continue;
}
if(state == -1){
if(nums[i]>nums[i-1]){
max++;
state = 1;
continue;
}
else continue;
}
}
return max;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java class leetcode 算法