最近群里有些同学在准备找工作,讨论了笔试、面试以及一些算法题,有些探讨勾起了我的一些回忆,这里跟大家分享两道DP题。
---------------------------------------------------------
第一题:
给定一个整数序列A={a1,a2,...,an},求它的最长递增子序列。比如,A={1,2,6,4,5}的最长递增子序列为{1,2,4,5},长度为4.
背景:最长递归子序列问题应该算是DP的一个比较经典的应用了。
解法一:
直接DP硬搞,时间复杂度O(n^2)
解法一思路:
创建标记数组f,令f[i]表示以第i个序列元素ai结尾的最长递增子序列的长度。
状态转移方程如下:f[i] = max{f[j]}+1 where a[j]<a[i]

本文分享了两道动态规划(DP)题目,分别是求给定序列的最长递增子序列及其解法,包括直接DP和二分查找优化的方法,以及如何找到该序列的最小代价使其有序,分析了动态规划的最优子结构和无后效性,并提供了状态转移方程。
最低0.47元/天 解锁文章
1万+

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



