Leetcode300最大顺序序列个数

题目描述:

给定一个未排序的整数数组,请找到最长递增子序列的长度

示列:

输入: [10,9,2,5,3,7,101,18]
输出: 4 
说明:增长最长的子序列是[2,3,7,101],因此长度是4

查找数组里面最大的顺序序列长度,当数组个数为1时最大长度为1,

当数组个数为2时如果第二数比前一个大,最大长度为2,

所以后面数据最大的长度和前面的数据有关。

使用数组dp记录,其中dp[i]表示记录数组中0到i元素中包含nums[i]元素的最大递增序列长度

    public int lengthOfLIS(int[] nums) {

        int[] dp = new int[nums.length];

        Arrays.fill(dp,1);
        for (int i = 0; i < nums.length; i ++){

            for (int j = i - 1; j < nums.length; j ++){
                if (nums[i] > nums[j]){
                    dp[i] = Math.max(dp[j]+1,dp[i]);
                }
            }
        }

        int ret = dp[0];

        for (int i = 0; i < dp.length; i ++){
            if (ret < dp[i]){
                ret = dp[i];
            }
        }

        return ret;
    }

 

posted @ 2020-05-27 11:22  newAdorable  阅读(1)  评论(0)    收藏  举报