题目描述:
示例 1:
示例 2:
示例 3:
思路:
初始化数组arr,令arr中每个值为1,代表nums对应索引元素为终点的递增序列初始值,遍历数组nums,从第一个元素开始判断以该元素为结尾的最长递增子序列长度,直到遍历完所有元素,返回最大递增子序列。
代码实现:
class Solution {
public int lengthOfLIS(int[] nums) {
int len = nums.length;
int[] arr = new int[len];
Arrays.fill(arr, 1);
int maxNum = 1; // 最大递增子序列(最少唯一)
for (int i = 1; i < len; i++) {
// 判断nums[0]到nums[i]组成的子数组的递增序列长度
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
arr[i] = Math.max(arr[i], arr[j] + 1);
}
}
maxNum = Math.max(maxNum, arr[i]);
}
return maxNum;
}
}