动态规划算法-子序列问题(数组中不连续的一段):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;
    }
}
相关推荐
YGGP1 小时前
【Golang】LeetCode 64. 最小路径和
算法·leetcode
.鸣2 小时前
set和map
java·学习
ha_lydms2 小时前
5、Spark函数_s/t
java·大数据·python·spark·数据处理·maxcompute·spark 函数
古城小栈2 小时前
Rust变量设计核心:默认不可变与mut显式可变的深层逻辑
算法·rust
电商API&Tina3 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
黄河滴滴3 小时前
java系统变卡变慢的原因是什么?从oom的角度分析
java·开发语言
侠客行03173 小时前
Mybatis二级缓存实现详解
java·mybatis·源码阅读
LYFlied3 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞3 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
Edward111111114 小时前
tomcat_servlet
java·servlet·tomcat