0
点赞
收藏
分享

微信扫一扫

最长递增子序列

云上笔记 2021-09-21 阅读 27
今日算法
题目描述:
示例 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;
    }
}
举报

相关推荐

0 条评论