贪心
思路:
找到局部最优
preDiff
: 之前节点的 Difference
curDiff
: 当前节点的 Difference
一旦 preDiff
和 curDiff
符号不一致,则说明存在 Wiggle
,count++
.
主要是判断语句 if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0))
之后遍历找到全局最优解
class Solution {
public int wiggleMaxLength(int[] nums) {
int curDiff = 0;
int preDiff = 0;
int count = 1;
for (int i = 1; i < nums.length; i++) {
curDiff = nums[i] - nums[i - 1];
if ((preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0)) {
count++;
preDiff = curDiff;
}
}
return count;
}
}