其他分享
首页 > 其他分享> > 动态规划-最长递增子数组(lc300

动态规划-最长递增子数组(lc300

作者:互联网

class Solution {
    public int lengthOfLIS(int[] nums) {
        int[] dp = new int[nums.length];
        int maxans = 1;
        if(nums.length == 0)
        return 0;
        dp[0] = 1;
        for(int i=1;i<nums.length;i++){
            dp[i] = 1;
            for(int j=0;j<nums.length-1;j++){
                if(nums[i]>nums[j]){
                    dp[i] = Math.max(dp[i],dp[j]+1);
                }
            }
            maxans = Math.max(dp[i],maxans);
        }
        return maxans;
    }
}

dp[i] 数组储存到第i个数字为止,最长的递增的子数组的长度,而maxans代表最终结果。
本题思想是从i=1开始,每一个数字与前面所有数字进行比较,在遍历前面所有数字时dp[i]也在不停变换,有递增情况发生则递增的子数组长度加一,循环遍历完所有数字得到最长递增子数组。
延伸题:最长递增子数组最多有几个?

标签:nums,int,递增,maxans,lc300,数组,dp
来源: https://blog.csdn.net/m0_48805614/article/details/120395204