动态规划算法-子序列问题(数组中不连续的一段):28.摆动序列

题目链接:376. 摆动序列(中等)

算法原理:

解法:动态规划

类似👉 动态规划算法-子数组、子串系列(数组中连续的一段):24.最长湍流子数组

Java代码:

java 复制代码
import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王洋
 * Date: 2025-10-23
 * Time: 19:37
 */
class Solution {
    //376.摆动序列
    //看完算法原理后自己写的,一遍过,跟第24题(978.最长的湍流子数组)思路一样
    //就是区别在这个可以不连续,所以要逐步更新,只在最长的长度上+1
    //吴小哲跟我写的一样
    public int wiggleMaxLength(int[] nums) {
        int n=nums.length;
        int[] f=new int[n];
        int[] g=new int[n];
        Arrays.fill(f,1);
        Arrays.fill(g,1);
        for(int i=1;i<n;i++){
            for(int j=0;j<i;j++){
                if(nums[j]<nums[i]) f[i]=Math.max(f[i],g[j]+1);
                else if(nums[j]>nums[i]) g[i]=Math.max(g[i],f[j]+1);
            }
        }
        int ret=1;
        for(int x:f) ret=Math.max(ret,x);
        for(int x:g) ret=Math.max(ret,x);
        return ret;
    }
}
相关推荐
测试_AI_一辰4 分钟前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
lucas_AI13 分钟前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
AI人工智能+电脑小能手38 分钟前
大白话说Java设计模式-08-建造者模式(业务实战篇)
java·设计模式·建造者模式·架构设计·对象构建
LuminousCPP42 分钟前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil2081 小时前
leetcode 三数之和
数据结构·算法·leetcode
xbgRS1 小时前
java中的线程
java
小小龙学IT1 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
eBest数字化转型方案1 小时前
从工程视角拆解冰柜资产管理:拍照识别 pipeline、纯净度算法与 IoT 选型踩坑
人工智能·物联网·算法
Interview Aid1121 小时前
Roblox OA 面经|小游戏+编程双修,Coding 两题满分通过
算法
ChaHae-In2 小时前
MyBatis入门操作
java·mybatis