最长上升子序列:要求球数组当中严格递增的子序列,可以不连续。
思路:设一个数组,保存以当前元素结尾的最长递增子串。
例如,1结尾的最长递增子串是1个元素,3结尾的最长递增子串是2各元素,2结尾的最长递增子串是2各元素,计算5结尾的时候,先求max之前所有元素的最长递增子串,然后1<5,所以生成2,。3<5,所以生成3。2<5,所以生成3,所以5的位置上是3.
再看1,
import java.util.Arrays;
public class maxAscendSequence {
public static Integer[] getMaxAscendSequence(Integer arr[]) {
Integer[] temp = new Integer[arr.length];
temp[0] = 1;
Integer max;
for (int i = 1; i < arr.length; i++) {
max = 0;
temp[i] = 0;
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i]) {
if (max < temp[j] + 1) {
max = temp[j] + 1;
}
}
}
temp[i] = max;
}
// Arrays.sort(temp);
return temp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] arr = new Integer[9];
arr[0] = -2;
arr[1] = 1;
arr[2] = -3;
arr[3] = 4;
arr[4] = -1;
arr[5] = 2;
arr[6] = 1;
arr[7] = -5;
arr[8] = 4;
for (int i = 0; i < arr.length; i++) {
System.out.println(getMaxAscendSequence(arr)[i]);
}
System.out.println();
}
}