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

【学会动态规划】 最长递增子序列(26)

目录

动态规划怎么学?

1. 题目解析

2. 算法原理

1. 状态表示

2. 状态转移方程

3. 初始化

4. 填表顺序

5. 返回值

3. 代码编写

写在最后:


动态规划怎么学?

学习一个算法没有捷径,更何况是学习动态规划,

跟我一起刷动态规划算法题,一起学会动态规划!

1. 题目解析

题目链接:300. 最长递增子序列 - 力扣(LeetCode) 

这道题目题如其名,就是找出最长的递增子序列,然后返回长度,

但是我们需要明确的是,什么是子序列,什么是子数组,一定要分清楚,

子数组必须要连续的,

而子序列不需要连续的,我们可以通过示例一来感受,

只要是在这个数组区间里的元素,是递增的,可以跳着选择,

总结来讲就是:子序列是可以在一个区间跳着选择的,也就是可以使不连续的。

2. 算法原理

1. 状态表示

dp[ i ] 表示以 i 位置结尾的所有子序列中,最长递增子序列的长度。

2. 状态转移方程

我们可以分成两种情况,

第一种情况是 i 位置自己作为一个子序列,那长度就是 1

第二种情况是 i 位置和前面任意一个位置构成子序列,我们把大于等于 0 小于 i 的这个位置设为 j

因为题目要求的是递增,所以需要 nums[ j ] < nums[ i ],等于 dp[ j ] + 1,

而 j 有很多种情况,所以就是求 0 <= j <= i - 1 位置 dp[ j ] 的最大值。

3. 初始化

我们可以把表初始化成 1 ,这样我们就可以只考虑第二种情况了。

4. 填表顺序

从左往右。

5. 返回值

返回 dp 表里的最大值即可。

3. 代码编写

class Solution {
public:int lengthOfLIS(vector<int>& nums) {int n = nums.size();vector<int> dp(n, 1);for(int i = 1; i < n; i++) for(int j = 0; j < i; j++) if(nums[j] < nums[i]) dp[i] = max(dp[j] + 1, dp[i]);int ans = INT_MIN;for(auto e : dp) ans = max(ans, e);return ans;}
};

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

http://www.lryc.cn/news/133880.html

相关文章:

  • Azure虚拟网络对等互连
  • CTFhub-sql-整数注入
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——归纳——第三节 归纳论证有效性
  • PaddleRS 1.0.0版本安装
  • 三维重建 PyQt Python MRP 四视图(横断面,冠状面,矢状面,3D)
  • 使用vscode编写插件-php语言
  • 【笔记】Spark3 AQE(Adaptive Query Execution)
  • 【雷达】接收和去噪L波段雷达接收到的信号研究(Matlab代码实现)
  • 【云原生】Docker Cgroups资源控制管理
  • k8s部署prometheus
  • 飞书小程序开发
  • Revit 3D高效处理:cad exchanger sdk 3.21 Crack
  • 【已解决】Linux中启动docker 出现 ‘ Failed to start docker.service: Unit not found. ’ 错误
  • 【学习日记】【FreeRTOS】时间片的实现
  • CentOS Docker仓库和代理配置
  • Lnton羚通算法算力云平台在环境配置中Windows10终端和VSCode下如何打开Anaconda-Prompt
  • Python web实战之细说Django的集成测试
  • Laravel 模型的作用域 模型的访问器和修改器 ⑨
  • 每日一学——交换机
  • 数学建模大全及优缺点解读
  • C++简介
  • 【广州华锐互动】3D空间编辑器:一款简洁易用的VR/3D在线编辑工具
  • golang云原生项目☞redis配置
  • C++ malloc/free/new/delete详解(内存管理)
  • SpringBoot中Mapper.xml的入参方式
  • 回归预测 | MATLAB实现WOA-RBF鲸鱼优化算法优化径向基函数神经网络多输入单输出回归预测(多指标,多图)
  • 浅析Python爬虫ip程序延迟和吞吐量影响因素
  • 【100天精通python】Day43:python网络爬虫开发_爬虫基础(urlib库、Beautiful Soup库、使用代理+实战代码)
  • Linux:安全技术与防火墙
  • Confluent kafka 异常退出rd_tmpabuf_alloc0: rd kafka topic info_new_with_rack