day55 最长递增子序列 最长连续递增子序列 最长重复子数组
题目1 300 最长递增子序列
题目链接 300 最长递增子序列
题意
找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素)
动态规划
动规五部曲
1)dp数组及下标i的含义
dp[i] 表示以nums[i]为结尾的最长递增子序列的长度
2)dp数组初始化
根据定义 长度至少是1 dp[i] = 1
3)递推公式
j从0到i-1各个位置的最长升序子序列 + 1 的最大值
要计算每个当前值dp[i]与现在遍历的nums[j]的长度的大小关系 每一个值都要进行比较
if(nums[i] > nums[j]) dp[i] = max(dp[j]+1,dp[i])
4)遍历顺序
根据递推公式 当前长度依赖于之前的结果 i从小到大遍历 j的遍历顺序无所谓,只要把i-1的范围内的值遍历完就ok
for(i=1;i<nums.size(); i++){
for(j=0;j<i;j++){
}
}
5)打印dp数组

代码
class Solution {
public:int lengthOfLIS(vector<int>& nums) {//定义dp数组 初始化vector<int> dp(nums.size(), 1);int result = 0;for(int i = 0; i < nums.size(); i++){for(int j = 0; j < i; j++){if(nums[i] > nums[j]) dp[i] = max(dp[j] + 1, dp[i]);}result = max(result, dp[i]);}return result;}
};
- 时间复杂度: O(n^2)
- 空间复杂度: O(n)
题目2 674 最长连续递增子序列
题目链接 674 最长连续递增序列
题意
找到未排序的整数数组的最长且连续递增的子序列的长度(不能删减元素了)
动态规划
动规五部曲
1)dp数组及下标i的含义
dp[i] 表示以nums[i]为结尾的最长连续递增子序列的长度
2)dp数组初始化
至少包含1个元素 dp[i] = 1
3)递推公式
只比较nums[i]与nums[i-1]即可,这样才可以保证是连续
不用去比较nums[j]与nums[i] (j是在0到i之间遍历)
if(nums[i] > nums[i-1]) dp[i] = dp[i-1] + 1
4)遍历顺序
根据递推公式 dp[i]依赖于dp[i-1] 从前往后推导
5)打印dp数组

代码
class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {//定义dp数组 初始化vector<int> dp(nums.size(), 1);int result = 1; //对于只有1个元素的数组for(int i = 1; i < nums.size(); i++){if(nums[i] > nums[i-1]) dp[i] = dp[i-1] + 1;result = max(result, dp[i]);}return result;}
};
- 时间复杂度:O(n)
- 空间复杂度:O(n)
题目3 718 最长重复子数组
题目链接 718 最长重复子数组
题意
返回两个整数数组nums1和nums2的公共的最长子数组的长度
动态规划
动规五部曲
1)dp数组及下标i的含义
想到使用二维dp数组可以记录两个字符串的所有比较情况
dp[i][j] 表示以nums1[i-1]结尾的数组和以nums2[j-1]结尾的数组的公共最长子数组的长度
2)dp数组初始化
根据递推公式 初始化第一行第一列
根据dp数组定义 dp[i][0] 与 dp[0][j] 没有意义
根据递推公式 是在上一个基础上加1 应该从0开始往上加 dp[i-1][0] = 0 dp[0][j-1] = 0 其他下标可初始为任意值
3)递推公式
根据dp数组的定义 dp[i][j]以nums1[i-1]结尾 nums2[j-1]结尾 所以比较nums1[i-1]与nums2[j-1]
if(nums1[i-1] == nums2[j-1]) dp[i][j] = dp[i-1][j-1] + 1
4)遍历顺序
遍历2个数组的顺序谁先谁后均可 只要把两个数组遍历完即可
之所以有等号,根据dp数组的定义 dp[i][j]以nums1[i-1]结尾 nums2[j-1]结尾
等号代表 nums1[nums1.size()-1] nums2[nums2.size()-1]
for(i=1;i<=nums1.size();i++){
for(j=1;j<=nums2.size();j++){
}
}
5)打印dp数组

代码
class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {//定义dp数组 初始化dp数组vector<vector<int>> dp(nums1.size() + 1, vector<int>(nums2.size() + 1, 0));int result = 0;for(int i = 1; i <= nums1.size(); i++){for(int j = 1; j <= nums2.size(); j++){if(nums1[i-1] == nums2[j-1]){dp[i][j] = dp[i-1][j-1] + 1;}result = max(result, dp[i][j]);}}return result;}
};
- 时间复杂度:O(n × m),n 为nums1长度,m为nums2长度
- 空间复杂度:O(n × m)
相关文章:
day55 最长递增子序列 最长连续递增子序列 最长重复子数组
题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素) 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i] 表示以nums[i…...
使用Springboot配置生产者、消费者RabbitMQ?
生产者服务 1、引入依赖以及配置rabbitmq 此时我们通过使用springboot来快速搭建一个生产者服务 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> applica…...
代码随想录算法训练营第46天|139.单词拆分、多重背包问题
139.单词拆分 题目链接:单词拆分 题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意:**不要求字典中出现的单词全部都使用,并且字典中的单词…...
数组与伪数组的区别
大家都知道,在js中使用 document.querySelectorAll(选择器)获取到的为该选择器能选择到的所有元素组成的伪数组,所谓伪数组,就是外表和数组一样,能够使用索引遍历,但本质是对象。 数组与伪数组之间的区别&…...
Java集合List
List特有方法 经典多态写法 // 经典的多态写法 List<String> list new ArrayList<>();常用API:增删改查 // 添加元素 list.add("Java"); // 添加元素到指定位置 list.add(0, "Python");// 获取元素 String s list.get(0);// 修改…...
elasticsearch基础命令
1 字段分词分析: GET /store_info_data/_analyze {"field": "storeName","text":"20pilapala0" }2 精确查找,去除评分 GET /store_info_data/_search {"query": {"constant_score": {"filter": {&quo…...
Capture One 23 Enterprise for Mac中文版 全面的图像处理工具
Capture One 23 Enterprise for Mac中文版一款专业的图像编辑和管理软件,具备强大的功能和工具,适用于摄影师、摄影工作室和专业用户。 软件下载:Capture One 23 Enterprise for Mac中文版下载 该软件为用户提供了全面的图像处理工具…...
Qt案例 通过调用Setupapi.h库实现对设备管理器中设备默认驱动的备份
参考腾讯电脑管家-软件市场中的驱动备份专家写的一个驱动备份软件案例,学习Setupapi.h库中的函数使用.通过Setupapi.h库读取设备管理器中安装的设备获取安装的驱动列表,通过bit7z库备份驱动目录下的所有文件. 目录导读 实现效果相关内容示例获取SP_DRVIN…...
如何理解JVM
JVM(Java虚拟机)是Java程序的运行环境,它是Java技术的核心组成部分之一。理解JVM涉及到以下几个方面的内容: 1. **虚拟机概念**:虚拟机是一种软件实体,它在物理计算机上模拟出一个计算机系统,使…...
第十四讲:C语言字符函数和字符串函数
目录 1. 字符分类函数 2、字符转换函数 3. strlen的使⽤和模拟实现 4. strcpy 的使⽤和模拟实现 5. strcat 的使⽤和模拟实现 6. strcmp 的使⽤和模拟实现 7. strncpy 函数的使⽤ 8. strncat 函数的使⽤ 9. strncmp函数的使⽤ 10. strstr 的使⽤和模拟实现 11. strt…...
华为海思2024春招数字芯片岗机试题(共9套)
huawei海思2024春招数字芯片岗机试题(共9套,有答案和解析,答案非官方,未仔细校正,仅供参考)(WX:didadidadidida313,加我备注:CSDN huawei数字题目,谢绝白嫖哈)…...
分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测
分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测 目录 分类预测 | Matlab实现KPCA-IDBO-LSSVM基于核主成分分析和改进蜣螂优化算法优化最小二乘支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述…...
与机器对话:ChatGPT 和 AI 语言模型的奇妙故事
原文:Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者:飞龙 协议:CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT:会话式人工智能的简史 会话式人工智能是人工智能(AI)的一个分…...
概率论基础——拉格朗日乘数法
概率论基础——拉格朗日乘数法 概率论是机器学习和优化领域的重要基础之一,而拉格朗日乘数法与KKT条件是解决优化问题中约束条件的重要工具。本文将简单介绍拉格朗日乘数法的基本概念、应用以及如何用Python实现算法。 1. 基本概念 拉格朗日乘数法是一种用来求解…...
[xboard]real6410-6.2 移植kernel网络驱动
文章目录 硬件电路软件配置问题1问题2问题3问题4功能测试硬件电路 核心板,使用DM9000A [图片] 软件配置 问题1 / # / # ifconfig ifconfig: /proc/net/dev: No such file or directory ifconfig: socket: Fun...
Quarkus初探
Quarkus初探 背景安装Quarkus安装Quarkus CLI 创建Quarkus项目运行Quarkus初探代码修改一下代码 数据持久化创建PanacheEntiry写入数据读取数据 Dev Service使用外部数据库区分dev和prod 构建native应用(依赖Graalvm) 背景 最早是在Infoq上了解到Quarku…...
90天玩转Python-02-基础知识篇:初识Python与PyCharm
90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装&…...
List操作的一些常见问题
1. Arrays.asList转换基本类型数组 在实际的业务开发中,我们通常会进行数组转List的操作,通常我们会使用Arrays.asList来进行转换,但是在转换基本类型的数组的时候,却出现转换的结果和我们想象的不一致。 import java.util.Arra…...
如何使用Java和RabbitMQ实现延迟队列?
前言 今天我们使用Java和RabbitMQ实现消息队列的延迟功能。 前期准备,需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和RabbitMQ实现消息队列?-CSDN博客 今天讲的是依赖RabbitMQ的延迟插件实现…...
AI论文速读 | TF-LLM:基于大语言模型可解释性的交通预测
论文标题: Explainable Traffic Flow Prediction with Large Language Models 作者:Xusen Guo, Qiming Zhang, Mingxing Peng, Meixin Zhu(朱美新)*, Hao (Frank)Yang(杨昊) 机构:香港科技大学(广州),约翰…...
实战演练:在快马平台用codex生成一个完整的react用户管理组件
今天想和大家分享一个实战案例:如何在InsCode(快马)平台用Codex快速生成一个React用户管理组件。整个过程比我预想的顺畅很多,特别适合需要快速原型开发的场景。 项目需求拆解 用户管理是后台系统的标配功能,这次要实现三个核心模块ÿ…...
YOLOv8与SenseVoice-Small的多模态安防监控系统设计
YOLOv8与SenseVoice-Small的多模态安防监控系统设计 1. 系统设计背景与价值 在现代安防监控领域,单纯依靠视频分析已经无法满足复杂场景下的安全需求。传统的监控系统往往需要人工实时监控,不仅效率低下,而且容易遗漏关键信息。特别是在夜间…...
TradingAgents-CN 多智能体金融分析系统:企业级容器化部署实战指南
TradingAgents-CN 多智能体金融分析系统:企业级容器化部署实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN TradingAgents-CN…...
动态透视报表 + 查询接口 + Excel导出
动态透视报表 查询接口 Excel导出 ✅ 动态行维度(产品 / 型号 / 项目 任意组合)✅ 动态列维度(月份)✅ a / f 子表头✅ SQL 透视(适合 GaussDB)✅ 查询接口 EasyExcel 导出接口✅ 可复用报表引擎 整体…...
老旧设备重生:开源工具OpenCore Legacy Patcher让旧Mac焕发新生的终极解决方案
老旧设备重生:开源工具OpenCore Legacy Patcher让旧Mac焕发新生的终极解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 您是否拥有一台被苹…...
构建专业级Java量化交易系统的5个实战步骤
构建专业级Java量化交易系统的5个实战步骤 【免费下载链接】ta4j A Java library for technical analysis. 项目地址: https://gitcode.com/gh_mirrors/ta/ta4j 你是否曾想用Java构建自己的量化交易系统,但被复杂的技术指标和回测框架吓退?今天&a…...
3个突破限制步骤:res-downloader让网络资源获取变得无拘无束
3个突破限制步骤:res-downloader让网络资源获取变得无拘无束 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在数…...
游戏存档终极备份指南:用Ludusavi保护你的游戏进度
游戏存档终极备份指南:用Ludusavi保护你的游戏进度 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 你是否曾因电脑重装、系统崩溃或误操作而丢失珍贵的游戏存档?数百小时的游戏…...
Qwen3-TTS快速部署教程:一键启动Web服务,3分钟开始声音克隆
Qwen3-TTS快速部署教程:一键启动Web服务,3分钟开始声音克隆 1. 为什么选择Qwen3-TTS进行语音克隆 想象一下这样的场景:你需要为海外客户录制多语言产品介绍,但雇佣专业配音演员成本高昂;或者想为自己的视频内容添加个…...
usearch的内存泄漏自动化测试:在CI中集成泄漏检测
usearch的内存泄漏自动化测试:在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & 🔜 Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...
