视频讲解
代码
class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
int n=nums.size();
vector<int> f(n+1, 1);
int ans=1;
// f[i] 以i数字结尾,所构成的最长上升子序列的长度
// 重叠子问题
// f[0] f[1] f[2] f[3] .. f[n]
// f[i] -> f[0] ... f[i-1]
// 最优子结构
// f[i]
// 分析状态空间是什么?
// 分析状态空间如何计算
for(int i=2;i<=n;++i) {
for(int j=i-1;j>=1;--j) {
if(nums[i-1]>nums[j-1]) f[i]=max(f[i],f[j]+1);
}
ans=max(ans,f[i]);
}
return ans;
}
};
参考
[1]. LeetCode 300. 最长递增子序列. https://leetcode-cn.com/problems/longest-increasing-subsequence/
欢迎分享,引用。若转载,请联系我,谢谢配合。 本文地址:https://qoogle.top/xiaoxu-tutorial-bas-linear-dp-longest-inreasing-subsequence/
3tenfold