Wiggle Subsequence
2016-07-26 15:17
459 查看
java编写
规律发现只需要扫过一遍数组,状态不同则加入一个点(也就是数量加1)
四个状态,state==3(这是用于起始刚进入循环,算是不确定状态,用来判断起始是上升还是下降)state==1之前是上升状态这时在下降就把点加进去,-1之前是下降状态这时再上升就把点加进去,0就不动
规律发现只需要扫过一遍数组,状态不同则加入一个点(也就是数量加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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序