动态规划yyds!虽然写不出来TT
int max(int i,int j){
if(i>j) return i;
return j;
}
int wiggleMaxLength(int* nums, int numsSize){
int dp[1000][2]={0};//dp[i][j] 表示到0-i为止的最大子序列,1表示最后是上升,0表示最后是下降
if(numsSize==1) return 1;
dp[0][0]=1;
dp[0][1]=1;
for(int i=1;i<numsSize;i++){
if(nums[i]==nums[i-1]){
dp[i][0]=dp[i-1][0];
dp[i][1]=dp[i-1][1];
}else if(nums[i] >nums[i-1]){
dp[i][1]=dp[i-1][0]+1;
dp[i][0]=dp[i-1][0];
}else{
dp[i][0]=dp[i-1][1]+1;
dp[i][1]=dp[i-1][1];
}
}
return max(dp[numsSize-1][0],dp[numsSize-1][1]);
}
结果:
标签:numsSize,return,int,max,序列,摆动,dp,376 From: https://www.cnblogs.com/llllmz/p/18064425