376、摆动序列
基本思想:
贪心算法
具体实现:
preDiff存放上一次的差值
curDiff存放当前的差值
只要一正一负,执行count + +
但是preDiff初始化为0,不管怎样比都不会出现一正一负,
所以比较条件为
if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0))
比较preDiff时需要带等号
一个数组长度为2 ,
举例,[2,5],摆动序列的最长子序列个数应该返回2
count初始化为1
此时curDiff > 0 && preDiff <= 0,
count++ ,
最后得到的count就是2
[4,5,5,4]
返回3,
代码:
class Solution { public int wiggleMaxLength(int[] nums) { if (nums == null || nums.length <= 1) { return nums.length; } //当前差值 int curDiff = 0; //上一个差值 int preDiff = 0; int count = 1; for (int i = 1; i < nums.length; i++) { //得到当前差值 curDiff = nums[i] - nums[i - 1]; //如果当前差值和上一个差值为一正一负 //等于0的情况表示初始时的preDiff if ((curDiff > 0 && preDiff <= 0) || (curDiff < 0 && preDiff >= 0)) { count++; preDiff = curDiff; } } return count; } }