
| 10 | 9 | 2 | 5 | 3 | 7 | 101 | 18 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 2 | 2 | 3 | 4 | 4 |
int lengthOfLIS(vector<int>& nums) {
if(nums.empty()) return 0;
int size = nums.size();
vector<int> dp(size);
dp[0]=1;
int res = 1;
for(int i=1;i<size;++i){
int max_val = 0;
for(int j=0;j<i;++j){
if(nums[i]>nums[j])//nums[i]为子序列的最后一个元素
max_val = max(max_val,dp[j]);
}
dp[i] = max_val + 1;
res = max(res,dp[i]);
}
return res;
}
本文介绍了一种求解最长递增子序列(LIS)问题的动态规划算法。通过使用一维DP数组记录每个位置的最长递增子序列长度,算法能够有效地找到整个序列中的最长递增子序列。代码示例展示了如何实现这一算法。

被折叠的 条评论
为什么被折叠?



