当前位置: 首页 > news >正文

动态规划_最长湍流子数组_C++

一.题目解析

算法解析:

1.状态表示:

dp[i]表示:以i位置为结尾的所有的子数组中,湍流子数组最长.

我们发现一个状态不能概括完全的时候就需要增加状态表示,在距离i位置最近的一次状态中,前面的可能是增,也可能是减,或者是水平状态,所以我们增加上升和下降的状态.

f[i]表示:以i位置为结尾的所有的子数组中,最后呈现"上升"状态的时候湍流子数组最长.

g[i]表示:以i位置为结尾的所有的子数组中,最后呈现"下降"状态的时候湍流子数组最长.

2.状态转移方程:

3.初始化

我们结合状态表示和状态转移方程就可以知道,单独的一个数可以构成一个可以看作是增或减或相等的一个子数组,所以初始表中全部位置都初始化为1

4.填表顺序

从左向右填表

5.返回值

返回f表或g表的最大值

二.代码编写:

class Solution { public: int maxTurbulenceSize(vector<int>& arr) { int n=arr.size(); vector<int>f(n,1);//全部初始化为1 auto g=f; int ret=1;//最小的长度都是1 for(int i=1;i<n;i++) { if(arr[i-1]<arr[i])f[i]=g[i-1]+1;//填f表 else if(arr[i-1]>arr[i])g[i]=f[i-1]+1;//填g表 ret=max(max(g[i],f[i]),ret);//返回值 } return ret; } };
http://www.jsqmd.com/news/500155/

相关文章:

  • 向量数据库选型
  • 随着OpenClaw被广泛应用,是否会涌现出大量利用其自动化能力进行网络攻击的法律灰色地带案件?
  • OpenClaw 是放大器,不是发动机——AI Agent 天花板之前的那个乘数
  • 技术干货版|HLS 流媒体调试必备:m3u8live.cn 在线 M3U8 播放器,免安装一键验流
  • 前端开发中的常用工具函数(四)
  • 网页版学习通后台自动刷课(可跳过练习版本)【edge】
  • 在Windows下配置针对WSL的cc-switch
  • 牛津大学发明“噪音魔法师“:一步生成高质量图像的全新AI技术
  • 【超全】基于微信小程序的电影院选座系统【包括源码+文档+调试】
  • java-继承
  • 关于 Cactus-react-native 构建问题记录
  • 2026论文降AI率工具怎么选?实测对比后我只认这一款
  • 用腾讯小龙虾装原装小龙虾。全网最快装小龙虾邪修大法,小学生都能装。
  • 让软件工程师更轻松的6个工具
  • MCP Tool 实现进度通知
  • 【设计模式】依赖注入控制反转
  • 体验完阿里「悟空」,我想把电脑里的龙虾换掉了,是真NB!
  • 基于SpringBoot的汽车美容保养系统
  • 主机管理---windows2012配置ftp服务器20240813
  • Ansys Zemax | 什么是Sobol取样?
  • 词嵌入(Word Embedding)和位置编码(Positional Encoding)
  • 常用的AIGC 检测工具有哪几种?
  • 被查出AI率不要慌!2026免费毕业论文去痕神器盘点
  • Cesium 中基于 1.19.11 实现自定义影像与哈密地形加载
  • 素材分类即搜即用:视频数字资产管理让制作周期缩短 70%,效率翻倍
  • [Win11家庭中文版]如何关闭基于虚拟化的安全性VBS(为了解决VBS启用状态下 VMware性能很差 频繁闪退或有各种不一样的崩溃报错)
  • 【小白说】【论文拆解】Neural-Pull: Learning Signed Distance Functions from Point Clouds by Learning to Pull Sp
  • Window(10/11)QQ多开
  • 嘎嘎降AI9大平台验证怎么用?上传到出结果完整操作录屏
  • SEO_2024年最新的SEO策略与方法详解