300.最长递增子序列
public class Solution {
public int LengthOfLIS(int[] nums) {
int[]dp=new int[nums.Length+1];
if(nums.Length==1)
{
return 1;
}
for(int i=0;i<nums.Length;i++)
{
dp[i]=1;
}
int ans=0;
for(int i=1;i<nums.Length;i++)
{
for(int j=0;j<i;j++)
{
if(nums[i]>nums[j])
{
dp[i]=Math.Max(dp[i],dp[j]+1);
}
ans=Math.Max(ans,dp[i]);
}
}
return ans;
}
}
674.最长连续递增序列
public class Solution {
public int FindLengthOfLCIS(int[] nums) {
if(nums.Length==1)
{
return 1;
}
int[]dp=new int [nums.Length];
for(int i=0;i<dp.Length;i++)
{
dp[i]=1;
}
int ans=1;
for(int i=1;i<nums.Length;i++)
{
if(nums[i]>nums[i-1])
{
dp[i]=dp[i-1]+1;
}
ans=ans>dp[i]?ans:dp[i];
}
return ans;
}
}
718.最长重复子数组
public class Solution {
public int FindLength(int[] nums1, int[] nums2) {
int[,]dp=new int[nums1.Length+1,nums2.Length+1];
int ans=0;
for(int i=1;i<=nums1.Length;i++)
{
for(int j=1;j<=nums2.Length;j++)
{
if(nums1[i-1]==nums2[j-1])
{
dp[i,j]=dp[i-1,j-1]+1;
ans=Math.Max(ans,dp[i,j]);
}
}
}
return ans;
}
}