摆动序列(Java)
摆动序列
整体思路:记录波峰和波谷的数量
难点:
- 怎么对平坡中的数据进行处理?用pre记录上一个已经成功被记录的点,每次比较直接pre和nums[i + 1]比较即可。
- 尾值的处理:首值一定会被记录,尾值跟pre比,只要不一样就被记录。
代码如下:
class Solution {/**这里只能用差值,而且不能相乘,因为涉及到平坡问题 */public int wiggleMaxLength(int[] nums) {int count = 1;int pre = nums[0];for(int i = 1; i < nums.length - 1; i++){if((nums[i] - pre) * (nums[i + 1] - nums[i]) < 0){count++;pre = nums[i];}else{continue;}}if(nums.length > 1 && nums[nums.length - 1] != pre){count++;}return count;}
}