day2【动态规划】最长的递增子序列

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

给定一个数组,找出其中最长的递增子序列。
例如,输入如下数组:

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]}
② 计算对于每个位置iiiL[i]L[i]L[i],依次遍历之后的位置jjj,先判断位置jjj是否可以到达(是否满足递增条件),然后计算所有可达到jjjL[j]L[j]L[j]L[i]L[i]L[i] = 最大的L[j]L[j]L[j] +++ 111

1.2 代码

计算最长递增序列长度LTSLT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值