动态规划算法-子序列问题(数组中不连续的一段):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;
    }
}
相关推荐
Dwzun11 分钟前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
紧跟先前的步伐9 小时前
Go AI Agent 实战 24|工具系统工程化收尾与阶段验收
人工智能·ai·golang·1024程序员节
学长毕设9 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
吠品9 小时前
智谱开源 ZCode 之后,真正的考试才开始
单片机·嵌入式硬件·1024程序员节
zzu123zsw10 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
日日大王学编程10 小时前
#Feed 流项目复盘:Redis 时间线缓存与 Outbox 消息可靠性设计
golang·1024程序员节
UIU11411 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
源码集结号11 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场11 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi11 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构