题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第⼀个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列,
例如, [1,7,4,9,2,5] 是⼀个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反,
[1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第⼀个序列是因为它的前两个差值都是正数,第⼆个序列是因
为它的最后⼀个差值为零。
给定⼀个整数序列,返回作为摆动序列的最⻓⼦序列的⻓度。 通过从原始序列中删除⼀些(也可以不删
除)元素来获得⼦序列,剩下的元素保持其原始顺序。
let array = [1,17,5,10,13,15,10,5,16,8]
//小于二的也是那么只有一个的时候摆动序列长度就为1,那么就可以从第二个元素开始遍历
let cur = 0,
pre = 0,
res = 1;
for (let i = 1; i < array.length; i++) {
cur = array[i] - array[i - 1]
if ((cur > 0 && pre <= 0) || (cur < 0 && pre >= 0)) {
res++
pre = cur
}
}
console.log(res);
思路:统计数组中的波峰与波谷,贪心策略就是在单调递增或递减的过程中只保持一个单调,那么就可以得出最优结果,也就是不冗余的最长摆动序列