题目考察的知识点:动态规划
题目解答方法的文字分析:用一个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;
}
};

京公网安备 11010502036488号