题目链接:376. 摆动序列
思路:输入数组可以类似于折线图,那么每次波动只保留波峰和波谷就好。
代码:
class Solution { public int wiggleMaxLength(int[] nums) { int len=0; for(int i=0,next = i; i<nums.length-1; ){ while(next+1<nums.length && nums[next] <= nums[next+1]) next++;//寻找波峰 if(nums[i] < nums[next]) { len++; } i = next; while(next+1<nums.length && nums[next] >= nums[next+1]) next++;//寻找波谷 if(nums[i] > nums[next]) { len++; } i = next; } return nums.length < 2 ? nums.length : len + 1; } }
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:36.2 MB, 在所有 Java 提交中击败了37.53%的用户