题目描述:给你一个整数数组 nums
,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
编码实现:
public int lengthOfLIS(int[] nums) {
if (null == nums){
return 0;
}
int size = nums.length;
if (size <= 1){
return 1;
}
int tmp[] = new int[size];
int length = 1, index = 0;
tmp[index] = nums[0];
for (int i = 1; i < size; i++) {
if (nums[i] > tmp[index]) {
tmp[++index] = nums[i];
length++;
} else if (nums[i] < tmp[index]) {
if (index == 0) {
tmp[index] = nums[i];
} else {
for (int j = index; j >= 0; j--) {
if (j == 0 || tmp[j - 1] < nums[i]) {
tmp[j] = nums[i];
break;
}
}
}
}
}
return length;
}