llllmz

导航

376. 摆动序列c

动态规划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]);    
}

结果:

posted on 2024-03-10 17:14  神奇的萝卜丝  阅读(19)  评论(0)    收藏  举报