题目
最长递增子序列
输入 4 2 3 1 5
输出3 (因为 2 3 5 组成了最长递增子序列)
分析
要求4 2 3 1 5的最长递增子序列,先求4 2 3 1 的递增子序列,结果是2 3 。然后比较5是否比3大,如果是的话,4 2 3 1 5的最长递增子序列就是2 3 5
题解
package com.company.test5;
import com.company.util.ArrayUtil;
public class Test6 {
public static void main(String[] args) {
// int[] arr={4,2,3,1,5};
int[] arr = ArrayUtil.randomArray(1, 5, 5);
int[] max=new int[arr.length];
// 遍历max[0,1,2]
// 如果arr[3]比arr[0,1,2]大则max[3]=max(arr[0]+1,arr[1]+1,arr[2]+1)
max[0]=1;
for (int j = 1; j < arr.length ; j++) {
int x=1;
for (int i = 0; i <= j-1 ; i++) {
if(arr[j]>arr[i]){
x=Math.max(x,max[i]+1);
}
}
max[j]=x;
}
int y=max[0];
for (int i = 1; i < max.length; i++) {
y=max[i]>y?max[i]:y;
}
System.out.println(y);
return;
}
}
标签:arr,int,max,递增,序列,最长
From: https://blog.csdn.net/zhourongxiang1/article/details/145131069