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

动态规划28:376. 摆动序列

动态规划解题步骤:

1.确定状态表示:dp[i]是什么

2.确定状态转移方程:dp[i]等于什么

3.初始化:确保状态转移方程不越界

4.确定填表顺序:根据状态转移方程即可确定填表顺序

5.确定返回值

题目链接:376. 摆动序列 - 力扣(LeetCode)

题解:

1.状态表示: up[i]表示以nums[i]结尾的子序列中上升摆动序列的最长子序列长度
                      down[i]表示以nums[i]结尾的子序列中下降摆动序列的最长子序列长度

2.状态转移方程:见代码分析

3.初始化:由于up表和down表的最低值为1,所以创建表时就将两个表初始化为1

4.填表顺序:从左向右,两个表依次填写

5.返回值:返回up表和down表中的最大值

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {//上升摆动子序列:最后两个元素之间是a<b//下降摆动子序列:最后两个元素之间是a>b//up[i]表示以nums[i]结尾的子序列中上升摆动序列的最长子序列长度//down[i]表示以nums[i]结尾的子序列中下降摆动序列的最长子序列长度//如果以nums[i]结尾的子序列要成为上升摆动子序列//则必须存在nums[j]<nums[i] 0=<j<i//即以nums[j]为结尾的下降摆动子序列//up[i]=down[j]+1//由于以nums[j]为结尾的下降摆动子序列可能有多个//所以up[i]=max(up[i],down[j]+1)//如果不存在nums[j]<nums[i] up[i]=1//如果以nums[i]结尾的子序列要成为下降摆动子序列//则必须存在nums[j]>nums[i] 0=<j<i//即以nums[j]结尾的上升摆动子序列//down[i]=up[j]+1//由于nums[i]结尾的子序列要成为上升摆动子序列//down[i]=max(down[i],up[j]+1)//如果不存在nums[j]>nums[i] down[i]=1size_t n=nums.size();//处理边界条件if(n==1) return 1;//创建dp表vector<int> up(n,1);//最低值为1,所以初始化为1auto down=up;//初始化up[0]=down[0]=1;//填表for(int i=1;i<n;++i){for(int j=0;j<i;++j){if(nums[j]<nums[i]) {up[i]=max(up[i],down[j]+1);}else if(nums[j]>nums[i]){down[i]=max(down[i],up[j]+1);}}}//返回值int ans=0;for(auto e:up) if(e>ans) ans=e;for(auto e:down) if(e>ans) ans=e;return ans;}
};

http://www.mrgr.cn/news/68353.html

相关文章:

  • abap 可配置通用报表字段级日志监控
  • 二分答案—愤怒的牛-P1676 [USACO05FEB] Aggressive cows G
  • ROS2humble版本使用colcon构建包
  • 快消零售行业企业员工培训的数字化转型
  • C++ 中的 JSON 序列化和反序列化:结构体与枚举类型的处理
  • U8C表体存货或编码相关的字段赋值不上
  • 【EdgeBox-8120AI-TX2】Ubuntu18.04 + ROS_ Melodic + HP60C上手体验
  • Linux系统的文件系统和日志和管理
  • 绿光激光头定制在各行业的应用优势
  • Java[面试题]-真实面试
  • 3235. 判断矩形的两个角落是否可达
  • 安装和卸载Mysql(压缩版)
  • Java——》try-with-resource
  • anaconda 安装笔记Ubuntu20
  • 强大又好用 这些AI工具让效率提升10倍
  • 【TS】九天学会TS语法——5.TypeScript的类
  • 气膜球幕:打造引人注目的展览新选择—轻空间
  • InsectaIntel 智能昆虫识别平台
  • 无人机影像处理系统技术选型
  • 【数据集】【YOLO】【目标检测】摔跤识别数据集 5097 张,YOLO行人摔倒识别算法实战训练教程!
  • node-sass下载报错解决方案
  • Java语法糖,你用过哪些?
  • 深入学习指针(5)!!!!!!!!!!!!!!!
  • Feign中的RequestInterceptor详解及配置
  • 万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
  • 智能指针中的循环引用具体解决流程