376. Wiggle Subsequence
Wiggle Subsequence
Solution
public class Solution {
public int wiggleMaxLength(int[] nums) {
if (nums == null || nums.length == 0) return 0;
int size = nums.length;
int[] f = new int[size]; // decreasing
int[] g = new int[size]; // increasing
f[0] = 1;
g[0] = 1;
for (int i = 1; i < size; i++) {
int fTemp = Integer.MIN_VALUE;
int gTemp = Integer.MIN_VALUE;
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
gTemp = Math.max(gTemp, f[j] + 1);
} else if (nums[j] > nums[i]) {
fTemp = Math.max(fTemp, g[j] + 1);
}
}
f[i] = fTemp;
g[i] = gTemp;
}
int result = Integer.MIN_VALUE;
for(int i = 0; i < size; i ++) {
result = Math.max(result, f[i]);
result = Math.max(result, g[i]);
}
return result;
}
}Last updated