[java]代码库package com.wzs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//求数组中最长升序的子序列
公共类测试
{
publicstaticvoidmain (字符串[ ] args ) )。
{
int a[]=
{
1、-1、2、-3、4、-5、6、-7
(;
find1(a;
}
//[1,- 1,2,- 3,4,- 5,6,-7]
//[ 1,1,2,1,3,1,4,1 ]
//时间复杂度:o(n*n ) ) ) ) ) ) ) )。
publicstaticvoidfind1(int[]a ) )。
{
int length=a.length;
int[] list=new int[length];//存储第I个元素之前的最长升序顺序值
列表result=new ArrayList (; //保存最长升序的序列
for(intI=0; i length; I )
{
list[i]=1;
for(intj=0; j i; j )
{
if(a(j ) a (I ) list )1list ) )
{
list[i]=list[j] 1;
if(result.isempty ) )
{
result.add(list[j];
}
if (! result.contains (列表[ I ] ) )
{
result.add (列表[ I ];
}
}
}
}
system.out.println (对于第' I个元素,最长升序数组: ' Arrays.tostring () list );
查找列表中的最大值
int max=list[0];
for(intI=0; i length; I )
{
if (列表[ I ] max ) )。
{
max=list[i];
}
}
System.out.println (最长增量序列长度) max );
System.out.println;
}
}
//源代码片段来自云代码http://yuncode.net