当前位置:网站首页>leetcode300.最长递增子序列(动态规划)
leetcode300.最长递增子序列(动态规划)
2022-08-09 16:49:00 【@爱编程的小杰】

首先,我们来分析一下题目意思,题目给了我们一个数组nums要我们求里面最长递增的子序列的长度,但是递增的数字可以不连续的,且不能改变数组中元素的顺序。
解题思路:
这题如果我们要用动态规划去实现,首先要将该数组拆分成子问题,我拿第一个例题给大家讲一下:
如上图,我们可以先从第一个数字算起,第一个数字它自己其实就可以看成是一个递增的子序列,长度为1,因此我们可以先开一个数组,长度和该数组一样大,并且将里面的数字全部置为1,该数组的每一个下标都对应着目标数组最大递增子序列的长度,全部置为1呢,是因为一开始都还没有算长度,而数字自己本身长度就为1,接下来就是我们要怎么去计算目标数字里面每个数字的最大递增子序列的长度,然后放到存放长度的数组里面。
画图给大家理解:
代码实现:
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if(nums.size()==1)
return 1;
int Max=0;
int M=nums.size();
int dp[M];
for(int i=0;i<M;i++)
{
dp[i]=1;
for(int j=0;j<i;j++)
{
if(nums[i]>nums[j])
{
dp[i]=max(dp[i],dp[j]+1);
}
}
if(dp[i]>Max)
Max=dp[i];
}
return Max;
}
};
运行结果如下:
这就是本篇博客的所以内容了,希望对大家有所帮助,感谢大家观看,喜欢的记得点赞关注加收藏哦!
链接如下:https://leetcode.cn/problems/longest-increasing-subsequence/
边栏推荐
- dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理
- 体验远超Hue,这才是技术人员最喜欢的SQL工具
- 【工业数字化大讲堂 第二十一期】企业数字化能碳AI管控平台,特邀技术中心总经理 王勇老师分享,8月11日(周四)下午4点
- MySQL的索引你了解吗
- 如何仿造一个websocket请求?
- What platform is EPIC?
- .NET 6 study notes (4) - Solve the Nullable warning in VS2022
- 逻辑越权和水平垂直越权支付篡改,验证码绕过,接口
- 在 ASP.NET Core 中上传文件
- 华为云全流程护航《流浪方舟》破竹首发,打造口碑爆款
猜你喜欢
随机推荐
ABP详细教程——模块类
什么是硬件集成开发?硬件集成开发的核心有哪些?
WinForm(四)一种实现登录的方式
从事软件测试一年,只会基础的功能测试,怎么进一步学习?
Jenkins使用pipeline部署服务到远程服务器
【工业数字化大讲堂 第二十一期】企业数字化能碳AI管控平台,特邀技术中心总经理 王勇老师分享,8月11日(周四)下午4点
C#介绍及基本数据类型
低代码平台和专业开发人员——完美搭档?
How to adjust futures account opening process and handling fee
International Soil Modeling Consortium-ISMC
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
Apache Doris 社区 PMC 杨政国:开源项目如何在自身和社区的需求中取得平衡?
如何通过 open-local 玩转容器本地存储? | 龙蜥技术
微服务:事务管理
Axure实现表格带滚动条
2022 全球 AI 模型周报
【机器学习】回归树生成过程及举例理解
谭中意:你知道 “开源女王” 是谁吗?
Fees and inquiry methods of futures account opening exchanges
Lagrange插值公式matlab实现









