当前位置:网站首页>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/
边栏推荐
猜你喜欢
随机推荐
不安装运行时运行 .NET 程序
mysql生成随机姓名、手机号、日期
Guo Wei (Guo Daxia): Nine Yes or No about open source
AlphaControls 控件 TsPanel TsGroupBox 块与组的结合
那些关于DOM的常见Hook封装(二)
Entry node of ring in leetcode/linked list
手写flexible.js的原理实现,我终于明白移动端多端适配
50道Redis面试题,来看看你会多少?
Apache Doris 社区 PMC 杨政国:开源项目如何在自身和社区的需求中取得平衡?
What is hardware integrated development?What are the cores of hardware integrated development?
最新!2022版新员工基础安全知识教育培训PPT,企业拿去直接用
方舟:生存进化开服务器端口映射教程
原油等特殊期货开户要求和豁免
A carnival of art and technology, cloud XR supports Anaya 2022 Sandbox Immersive Art Season
uniapp电影购票选座系统源码
【Pycharm好用功能】
.NET 6 study notes (4) - Solve the Nullable warning in VS2022
mysql generates random name, mobile number, date
【.NET6+Modbus】Modbus TCP协议解析、仿真环境以及基于.NET实现基础通信
leetcode/链表中环的入口节点