Advertisement

动态规划下的最长递增子序列问题(LC)

阅读量:

问题

在这里插入图片描述

方法一:动态规划

定义一个数组dp[i],用于记录以nums[i]作为结尾元素的最长递增子序列的长度(该子序列必须包含nums[i]),此时可以采用如下状态转移方程进行计算:
dp[i] = max\{dp[j] | 0 <= j < i 且nums[i]>nums[j]\} + 1
当所有位于i之前的元素nums[j]均大于当前元素nums[i]时,此时dp[i]的值将被设定为1。

复制代码
    public int lengthOfLIS(int[] nums) {
        int len = nums.length;
        int[] length = new int[len];
        Arrays.fill(length,1);
        for(int i = 0; i < len; i++){
            for(int j = i + 1; j < len; j++){
                if(nums[j] > nums[i]){

全部评论 (0)

还没有任何评论哟~