给定一个数组,找出其中最长的递增子序列。
例如,输入如下数组:
nums = [1, 5, 2, 4, 3]
返回最长的递增子序列长度是3
1 枚举法/暴力搜索
1.1 思路
枚举法的思路是依次从第一个数出发,依次遍历这个数可以到达(符合递增规则)的下一个数。
算法分为两个部分:
① 计算最长递增序列长度LTSLTSLTS,循环数组中的每个数,分别计算从位置iii出发能够得到的最长递增子序列长度记为L[i]L[i]L[i],LTSLTSLTS = max{
L[i]}max\{L[i]\}max{
L[i]}
② 计算对于每个位置iii的L[i]L[i]L[i],依次遍历之后的位置jjj,先判断位置jjj是否可以到达(是否满足递增条件),然后计算所有可达到jjj的L[j]L[j]L[j],L[i]L[i]L[i] = 最大的L[j]L[j]L[j] +++ 111
1.2 代码
计算最长递增序列长度LTSLT

文章介绍了如何使用动态规划解决找数组中最长递增子序列的问题。首先讲解了暴力枚举法及其时间复杂度,然后引入记忆化搜索优化计算过程,最后展示了如何将算法改写为迭代形式,以提高效率。
最低0.47元/天 解锁文章
355

被折叠的 条评论
为什么被折叠?



