题目
- 给一个数组,返回其最长的递增子序列
思路
- dp
- 以当前数字为结尾的最长子序列,是之前数字比当前数字小的最长递增子序列中的最大值 + 1
代码
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
int n = nums.size();
vector<int> dp(n);
dp[0] = 1;
int ans = 1;
for (int i = 1; i < n; i++) {
dp[i] = 1;
for (int j = 0; j < i; j++) {
if (nums[j] < nums[i]) {
dp[i] = max(dp[i], dp[j] + 1);
}
}
ans = max(dp[i], ans);
}
return ans;
}
};