如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第一個差(如果存在的話)可能是正數或負數。少于兩個元素的序列也是擺動序列。
例如, [1,7,4,9,2,5] 是一個擺動序列,因為差值 (6,-3,5,-7,3) 是正負交替出現的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是擺動序列,第一個序列是因為它的前兩個差值都是正數,第二個序列是因為它的最后一個差值為零。
給定一個整數序列,返回作為擺動序列的最長子序列的長度。 通過從原始序列中刪除一些(也可以不刪除)元素來獲得子序列,剩下的元素保持其原始順序。
示例 1:
輸入: [1,7,4,9,2,5]
輸出: 6
解釋: 整個序列均為擺動序列。
代碼
class Solution {public int wiggleMaxLength(int[] nums) {int n=nums.length;if(n==0) return 0;int len0=1,len1=1;//len0代表上升子序列的最大長度,len1代表下降子序列的長度for(int i=1;i<n;i++){if(nums[i]>nums[i-1])//出現了上升,下降子序列長度加1,并將結果賦值給上升的子序列長度len0=len1+1;else if(nums[i]<nums[i-1])//出現了下降,上升子序列長度加1,并將結果賦值給的下降子序列長度len1=len0+1;}return Math.max(len0,len1);}
}