动态规划算法-子序列问题(数组中不连续的一段):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;
    }
}
相关推荐
神奇小汤圆21 小时前
字节面试官:你知道Claude Code的多Agent实现机制吗?
算法
luck_bor21 小时前
Map&Stream流
java·开发语言
运筹vivo@21 小时前
LeetCode 2540. 最小公共值
算法·leetcode·职场和发展
小许同学记录成长21 小时前
轻量正射实现原理技术文档
算法·无人机
阿文的代码库21 小时前
如何在C++中使用标准库的智能指针
开发语言·c++·算法
用户2986985301421 小时前
Java 统计 Word 文档中的单词数量
java·后端
城事漫游Molly1 天前
方差分析(ANOVA)入门——比较三组或更多组均值的利器
大数据·算法·均值算法·论文笔记·科研统计
Yzzz-F1 天前
[专题]最大子矩形问题
算法
WL_Aurora1 天前
Python 算法基础篇之查找算法(三):树表查找
python·算法
AI人工智能+电脑小能手1 天前
【大白话说Java面试题 第63题】【JVM篇】第23题:工作中用过的JVM常用基本配置参数有哪些?
java·开发语言·jvm·面试