题目考察的知识点:动态规划
题目解答方法的文字分析:用一个dp表表示以结尾的最大子序列的长度,以某一个位置为结尾进行分析;以i为结尾,那么如果i之前的数大于i(i之前的下标记为j),那么构成递减子序列,所以可以dp[i]=dp[j]+1,但是有很多个dp[j]+1,所以取最大的附给dp[i]。
本题解析所用的编程语言:c++
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param seeds int整型vector * @return int整型 */ int lengthOfLIS(vector<int>& seeds) { // write code here int n = seeds.size(); vector<int> dp(n, 1); int ret = 1; for (int i = 1; i < n; ++i) { for (int j = 0; j < i; ++j) { if (seeds[j] > seeds[i]) dp[i] = max(dp[j] + 1, dp[i]); } ret = max(dp[i], ret); } return ret; } };