【算法四十六】300. 最长递增子序列

300. 最长递增子序列

动态规划:

java 复制代码
class Solution {
    public int lengthOfLIS(int[] nums) {
        //子问题以nums[i]结尾的最长子序列长度
        //如果nums[j]<nums[i],所以nums[i]可以接在nums[j]后面
        //状态方程:dp[i] = Math.max(dp[i],dp[j]+1)
        //从左到右

        int n = nums.length;
        int[] dp = new int[n];
        Arrays.fill(dp,1);
        int ans = 1;

        for(int i = 0;i<n;i++){
            for(int j = 0;j<i;j++){
                if(nums[j]<nums[i]){
                    dp[i] = Math.max(dp[i],dp[j]+1);
                }
            }
            //比较得答案
            ans = Math.max(ans,dp[i]);
        }

        return ans;
    }
}

时间复杂度:O(N²)

空间复杂度:O(N)

相关推荐
碧海银沙音频科技研究院3 小时前
高通QCC3084-QCC518X蓝牙耳机项目
人工智能·深度学习·算法
兩尛3 小时前
compare_exchange_weak 的用法
算法
数智工坊3 小时前
面向具身操作的视觉-语言-动作模型:让机器人真正理解并执行人类指令
论文阅读·人工智能·算法·机器人
代码不停3 小时前
记忆化搜索题目练习
java·算法
闻缺陷则喜何志丹3 小时前
【C++动态规划】B3734 [信息与未来 2017] 加强版密码锁|普及+
c++·算法·动态规划·洛谷
是娇娇公主~3 小时前
力扣——105. 从前序与中序遍历序列构造二叉树详解
算法·leetcode·哈希算法
承渊政道3 小时前
【贪心算法】(经典实战应用解析(三):K次取反后最⼤化的数组和、按⾝⾼排序、优势洗牌、最⻓回⽂串、增减字符串匹配)
数据结构·c++·学习·算法·贪心算法·线性回归·哈希算法
凌波粒3 小时前
LeetCode--100.相同的树(二叉树)
算法·leetcode·职场和发展
alexwang2113 小时前
P16473 [GKS 2013 #B] Sudoku Checker题解
c++·算法·题解·洛谷