class Solution {
public:
int lengthOfLIS(vector<int>& nums)
{
int m = nums.size();
vector<int> dp(m, 1);
int ans = 1;
for (int i=1; i<m; i++)
{
for (int j=i-1; j>=0; j--)
{
if (nums[i]>nums[j])
{
dp[i] = max(dp[i], dp[j]+1);
}
}
ans = max(ans, dp[i]);
}
return ans;
}
};
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums)
{
int m = nums.size();
int ans = 1;
int num = 1;
for (int i=1; i<m; i++)
{
if (nums[i]>nums[i-1]) num++;
else
{
ans = max(ans, num);
num = 1;
}
}
ans = max(ans, num);
return ans;
}
};
class Solution {
public:
int findLength(vector<int>& nums1, vector<int>& nums2)
{
int m = nums1.size();
int n = nums2.size();
int ans = 0;
vector<vector<int>> dp(m, vector<int>(n));
for (int i=0; i<m; i++)
{
if (nums1[i]==nums2[0])
{
dp[i][0]=1;
ans = 1;
}
}
for (int j=0; j<n; j++)
{
if (nums1[0]==nums2[j])
{
dp[0][j]=1;
ans = 1;
}
}
for (int i=1; i<m; i++)
for (int j=1; j<n; j++)
{
if (nums1[i]==nums2[j]) dp[i][j] = dp[i-1][j-1] + 1;
ans = max(ans, dp[i][j]);
}
return ans;
}
};