题目一:给定一个长度为N的数组,找出一个最长的单调递增子序列(不一定连续,但是顺序不能乱)。并返回单调递增子序列的长度。
例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},我们返回其长度6。
题目二:在题目一的基础上,我们要返回该子序列中的元素。例如,给定一个长度为8的数组A{1,3,5,2,4,6,7,8},我们返回的是单调递增子序列{1,2,4,6,7,8}。
解析:我们使用动态规划的思想来解决此问题,假设给定的数组为nums,其长度为N。设置一个辅助数组len,其长度和给定数组的相同。在辅助数组中存储的是以该元素结尾的最长的单调递增子序列的长度,如下图所示:
那么![]()