最长递增子序列的长度

给你一个整数数组 nums ,找到其中最长严格递增子序列的【长度】。

  • dp[i] 的值代表 nums 前 ii 个数字的最长子序列长度。 将j < i
  • dp[i] = max(dp[i], dp[j] + 1) for j in [0, i)
import java.util.Arrays;
/**
 * 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
 *
 * 输入:nums = [10,9,2,5,3,7,101,18]
 * 输出:4
 * 解释:最长递增子序列是 [2,3,7,101],因此长度为4。
 *
 *
 */
public class lengthOfLIS {
    public static int lengthOfLISolution(int[] nums) {
        if(nums.length == 0) return 0;
        int[] dp = new int[nums.length];
        int res = 0; // 保存结果
        Arrays.fill(dp, 1);//填充初始值 dp = 【1,1,1,...】,每个数自成一个长度为1的子序列
        for(int i = 0; i < nums.length; i++) {
           for (int j = 0; j < i; j++){
               if (nums[j] < nums[i]) dp[i] = Math.max(dp[i], dp[j]+1);
           }
           res = Math.max(dp[i],res);
        }
        return res;
    }
}
全部评论

相关推荐

07-31 14:40
门头沟学院 Java
代码主理人:触发重传机制了,可能是服务器负载太高了,ACK丢包了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
09-21 21:14
门头沟学院
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务