最近在看算法,主要是蓝桥杯比赛。怕忘记,就记录一下,方便以后看
public class Main {
public static int lis(int[] arr){
if(arr == null || arr.length == 0)
return 0;
return lis(arr, arr.length);
}
private static int lis(int[] arr, int length){
int lis[] = new int[length];
//init
for(int i = 0; i < length; i++)
lis[i] = 1;//lis中初始的值都是1
for(int i = 1; i < length; i++)
{
for(int j = 0; j < i; j++)
{
// lis[i]=Math.max(lis[i-1], lis[i-1]+1);
if(arr[i] > arr[j] && lis[j] + 1 > lis[i])//核心代码是这句
lis[i] = lis[j] + 1;
}
}
int max = lis[0];
for(int i = 1; i < length; i++)
if(max < lis[i])
max = lis[i];
return max;
}
public static void main(String[] args) {
int[] arr = {3,1,4,1,5,9,2,6,5,5};
int result = lis(arr);
System.out.println(result);
}
}