动态规划
主要思想是:dp[i]从以比它小的元素作为结尾的子序列中找起,看看谁的子序列最长,然后nums[i]又比人家小,就接上去。
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
int ans = 0;
vector<int>dp(nums.size(),1);
for(int i = 1;i<nums.size();i++)
{
int t = 0;
for(int j = 0;j<i;j++)
{
if(nums[j]<nums[i] && dp[j]>t)
{
t = dp[j];
}
}
dp[i]+=t;
}
int Max = 0;
for(int i = 0;i<dp.size();i++)
{
Max = max(Max,dp[i]);
}
return Max;
}
};