状态转移方程,有哪些状态,如何表示这些状态,它们之间有什么关系,怎么转移的。
这里需要求出的是一个子序列,很明显有两种状态,如果我们用一个数组很难去描述两种状态,所以可以考虑用两个,并
总结这两个之间是如何转换的。
class Solution {
public int wiggleMaxLength(int[] nums) {
if(nums.length<=1)
return nums.length;
int up[]=new int[nums.length];
int down[]=new int[nums.length];
up[0]=1;
down[0]=1;
for(int i=1;i<nums.length;i++){
if(nums[i]>nums[i-1]){
up[i]=down[i-1]+1;
down[i]=down[i-1];
}
else if(nums[i]<nums[i-1]){
down[i]=up[i-1]+1;
up[i]=up[i-1];
}else{
down[i]=down[i-1];
up[i]=up[i-1];
}
}
return Math.max(down[nums.length-1],up[nums.length-1]);
}
}