public class Zuichangzixulie {
public static void main(String[] args) {
int[] nums = {10,9,2,5,3,7,101,18};
System.out.println(lengthOfLIS(nums));
}
//就是将a[1]与a[0]比,如果a1>a0,那么就给db[i]+1,每一次循环让db[i]与上一次的db[i]比较,谁大谁就是最长升序子序列
public static int lengthOfLIS(int[] nums) {
int [] db=new int [nums.length];
db[0]=1;
int maax=db[0];
for(int i=1;i<nums.length;i++)
{
db[i]=1;
for(int j=0;j<i;j++)
{
//di[j]+1>di[i]
//这个判断条件其实就是 如果nums[i]大于nums[j] 那么就证明nums[j]nums[i]是升序的,所以就给nums[i]对应的d[i]+1;表示他最长的升序子序列为多少
if(nums[i]>nums[j]&&db[j]+1>db[i])
{
db[i]=db[j]+1;
}
}
if (maax<db[i])
{
maax=db[i];
}
}
return maax;
}
}
最长升序子序列
最新推荐文章于 2021-05-21 13:09:49 发布