当前位置: 首页 > news >正文

(动态规划 最长递增的子序列)leetcode 300

这道题我第一眼反应就是暴力,但是暴力的话就是n*n-1*n-2*...n-(n-1) 也就是O(n^n)dfs做绝对超时

贪心也不行,这里是子序列,要考虑在ni的范围内考虑多种路线取最优,所以用动态规划

如何用动态规划呢?

答:建立dp数组:每个dp存放0-i范围的子序列的最长递增子序列长度

用两个for循环

为什么不能用一个for循环?

答:比如0的长度为1,0-1的的最长子序列长度为1或者2

那0-3的最长子序列的长度就是3(nums3>nums2)或者2了嘛

这个只限于子串,子序列比较特殊,这里很难举例特殊例子,直接说明:

每个dp【i】代表着经过的路径,可以看成递归的归的父节点,dp【3】存放的可能是【2-3】,【1-3】【1-2-3】

所以用两个for循环外层为子序列最后结尾的最长长度,里层就遍历所有的子序列(因为每个dp【i】存放的是最优路径,所以dp[i]=max(dp[i],dp[j]+1) max里面 dp[i]就是上个子序列dp[j]+1,和现在dpj的最优路径加上nums【i】构成的子序列比较长度

//这里举例的数字是 1 3 5 8

题目

#include <vector>
#include <algorithm>

class Solution {
public:
    int lengthOfLIS(std::vector<int>& nums) {
        int n = nums.size();
        if (n == 0) return 0;

        std::vector<int> dp(n, 1); 
        int ans = 1;

        for(int i=1;i<n;i++)
     {       for(int j=0;j<i;j++)
            {
                if(nums[i]>nums[j])
                {
                    dp[i]=max(dp[i],dp[j]+1);
                }
            }
            ans=max(ans,dp[i]);
    }
        return ans;
    }
};


文章转载自:

http://NwpYTtui.cbnjt.cn
http://ynIHwUPB.cbnjt.cn
http://3fJHjNPj.cbnjt.cn
http://xFY9bdh2.cbnjt.cn
http://QNXCgOlk.cbnjt.cn
http://p4ZQJiUa.cbnjt.cn
http://3UggHHGj.cbnjt.cn
http://VIzRI6Ms.cbnjt.cn
http://KCvT4wvh.cbnjt.cn
http://CekD5GH7.cbnjt.cn
http://Z9rHF5Ki.cbnjt.cn
http://q7NJEVqE.cbnjt.cn
http://4767uJBG.cbnjt.cn
http://DMdFnwtE.cbnjt.cn
http://wgXN4xqh.cbnjt.cn
http://C5C6GZTI.cbnjt.cn
http://m22GbiWQ.cbnjt.cn
http://LFOxBcpW.cbnjt.cn
http://siawJUod.cbnjt.cn
http://dV51fjOJ.cbnjt.cn
http://X6zZQmJ0.cbnjt.cn
http://EciynrqI.cbnjt.cn
http://pewU5vQ0.cbnjt.cn
http://abHHvRSp.cbnjt.cn
http://1AjhtvgS.cbnjt.cn
http://I1MAVwcY.cbnjt.cn
http://pb3UZk8o.cbnjt.cn
http://3u1LTYnE.cbnjt.cn
http://453zDd5i.cbnjt.cn
http://tuV5YmXR.cbnjt.cn
http://www.dtcms.com/a/45665.html

相关文章:

  • vue3+TS使用i18n.global.locale,页面要刷新时才更新
  • SQL Server Management Studio的使用
  • 运维Splunk面试题及参考答案
  • (上)基于机器学习的图像识别——遥感图像分类(LeNet-5;AlexNet;VGGNet;GoogLeNet;ResNet)
  • 局域网自动识别机器名和MAC并生成文件的命令
  • 自然语言处理NLP入门 -- 第九节NLP 实战项目 1:情感分析系统
  • 学习dify第二天-web前篇
  • 【C++】防止机械/移动硬盘休眠 - NoSleepHD
  • start DL from stratch (2)!!!
  • 【AI+智造】南京江北新区制造业特点分析及智慧设备运维诊断开发方案
  • RocketMQ的运行架构
  • [特殊字符]【CVPR2024新突破】Logit标准化:知识蒸馏中的自适应温度革命[特殊字符]
  • 中科大 计算机网络原理 第一章 1.6分组延迟、丢失和吞吐量 笔记
  • 如何把网络ip改为动态:全面指南
  • 一个基于C# Winform开源免费的通用快速开发框架,内置完整的权限架构!
  • python爬虫报错信息解决方法
  • C++22——哈希
  • 基于Springboot博物馆文博资源库系统【附源码】
  • 传输层协议TCP
  • Python从0到100(八十九):Resnet、LSTM、Shufflenet、CNN四种网络分析及对比
  • linux学习笔记3
  • Spring IoC
  • kafka consumer 手动 ack
  • 详解直方图均衡化
  • Java最新面试题(全网最全、最细、附答案)
  • mysql 全方位安装教程
  • jvm内存区域、调优参数,堆区栈区分别存什么
  • Buildroot学习笔记
  • doris:Hudi Catalog
  • Windows逆向工程入门之MASM字符处理机制