本题中的子序列可以不是连续的
如 2 7 3 5中最长递增子序列为 2 3 5
int lengthOfLIS(vector<int>& nums) {
int n = nums.size();
if(n < 2)return n;
//dp[i]表示在0-i个数字中,选中nums[i]这个数字可以构成的最长子序列个数
vector<int> dp(n, 1);
int ans = 1;
for(int i = 1; i < n; i++){
for(int j = 0; j < i; j++){
//定义j<i,若nums[j]<nums[i],则nums[i]可以放在nums[j]的后面,此时的长度为dp[j]+1 (j依次遍历)
if(nums[j] < nums[i]){
dp[i] = max(dp[j]+1, dp[i]);
}
}
ans = max(ans, dp[i]);
}
return ans;
}