如果当前nums[i] 是降序,那么便更新down,down = up + 1 最终,该数组的最长摆动子序列的长度便是 Math.max(up,down)
经验教训
理解这种贪心做法为什么对
代码实现
class Solution {
publicintwiggleMaxLength(int[] nums) {
if (nums == null) {
return0;
}
if (nums.length <= 1) {
return nums.length;
}
int up = 1;
int down = 1;
for(int i = 1; i < nums.length; ++i) {
int diff = nums[i] - nums[i - 1];
if (diff > 0) {
up = down + 1;
}
if (diff < 0) {
down = up + 1;
}
}
return Math.max(up, down);
}
}