2023.8.24
与最长递增子序列 类似,不同的是, 本题要求连续序列,所以不需要第二层遍历比较之前所有的元素了,只需要比较上一个元素i-1。 dp[i]的含义为:以nums[i]元素为结尾的序列的最长递增子序列。 注意这里是以i为结尾,而不是i之前的元素。 代码如下:
cpp
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
vector<int> dp(nums.size() , 1);
int ans = 1;
for(int i=1; i<nums.size(); i++)
{
if(nums[i]>nums[i-1]) dp[i]=dp[i-1]+1;
ans = max(ans,dp[i]);
}
return ans;
}
};
本题与最长递增子序列 的区别在于:不连续递增子序列和前i-1个元素都有关,而连续递增子序列只和前1个元素有关。