代码随想录算法训练营第四十三天 | 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

news2024/9/28 3:54:25

四十三天打卡,今天解决子序列系列题目,定义dp[i]为以nums[i]为结尾的最长子序列长度。


300.最长递增子序列

题目链接

2024.7.12一刷

没做出来。这题答案使用dp做,答案也不是dp.back(),思路需要转换一下。

2024.9.27二刷

解题过程

  • dp无思路,这题dp[i]定义为以nums[i]为结尾的最大子序列长度
  • 则对于i > 0的每一个数,需比较前面所有数与nums[i]的大小,若nums[i]大则尝试更新dp[i]
  • if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);

在这里插入图片描述

动态规划

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        vector<int>dp(nums.size(), 1);
        int result = 1;
        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
            }
            result = max(result, dp[i]);
        }
        return result;
    }
};

674.最长连续递增序列

题目链接

解题过程

  • 用贪心做出来了,也能用动态规划做,与“300.最长递增序列”这一题的区别就是,只有前一个元素比自身小才更新dp值,而前者是需要比较前面所有元素与自身的大小。
  • dp[i]的含义是:以nums[i]为结尾的最长连续递增序列长度

动态规划

class Solution {
public:
    int findLengthOfLCIS(vector<int>& nums) {
        int result = 1;
        vector<int>dp(nums.size(), 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;
    }
};

718.最长重复子数组

题目链接

解题过程

  • 看提示用二维数组,我们就可以定义了:dp[i][j]是以nums1[i]和nums2[j]为结尾的两个数组的最长重复子数组,dp可以定义多一个维度,这样省去了初始化这一步。
  • 状态转移公式:if (nums[i - 1] == nums[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;

在这里插入图片描述

动态规划

class Solution {
public:
    int findLength(vector<int>& nums1, vector<int>& nums2) {
        int result = 0;
        vector<vector<int>>dp(nums1.size() + 1, vector<int>(nums2.size() + 1));
        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;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2172182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

酒店智能门锁接口pro[V10] 对接酒店收银-SAAS本地化-未来之窗行业应用跨平台架构

一、文档 调用函数库&#xff1a; 提供Windows下的32位动态连接库proRFL.DLL&#xff0c;函数使用详细说明 //-----------------------------------------------------------------------------------// 功能&#xff1a;读DLL版本&#xff0c;不涉及USB口操作 C原型&…

Unity八股总结

这里写目录标题 OnEnable、Awake、Start运行时的发生顺序&#xff1f;哪些可能在同一个对象周期中反复的发生&#xff1f;动态加载资源的方式?Unity3d脚本从唤醒到销毁有着一套比较完整的生命周期&#xff0c;请列出系统自带的几个重要的方法。物理更新一般放在哪个系统函数里…

视频加字幕软件:5款好用加字幕软件来袭!

在视频制作过程中&#xff0c;添加字幕不仅能够提升观众的观看体验&#xff0c;还能有效传达视频信息&#xff0c;增强内容的吸引力和理解度。然而&#xff0c;市面上众多的视频加字幕软件让人眼花缭乱&#xff0c;不知如何选择。今天&#xff0c;我们就来盘点五款既实用又易上…

设计模式之享元(Flyweight)模式

前言 面向对象很好地解决了 “抽象” 的问题&#xff0c;但是不可避免的要付出一定的代价。对于通常情况来讲&#xff0c;面向对象的成本大都可以忽略不计。但是某些情况&#xff0c;面向对象所带来的成本必须谨慎处理 具体需要自己根据需求去评估 定义 “对象性能” 模式。运用…

pdf转ppt文件有哪些方法?这几种方法看了就能学会!

pdf转ppt文件有哪些方法&#xff1f;PDF与PPT&#xff0c;作为两种广泛应用的文件格式&#xff0c;它们各自承载着不同的功能特性与适用场景&#xff0c;其间的差异远不止于表面&#xff0c;首先&#xff0c;PDF可以很好的保留文档原始布局与内容&#xff0c;它确保了信息的精确…

【记录】在返回值类型为BigDecimal情况下末尾小数位为0的会省略不显示

【问题】&#xff1a;在返回值类型为BigDecimal情况下末尾小数位为0的会省略不显示 问题复现&#xff1a; 实体类 package com.zlp.aspect.entity;import java.math.BigDecimal;/*** program: my_utils* description:* author: zlp* create: 2024-09-24 10:01**/public clas…

【test】google cloud

https://shell.cloud.google.com/ 默认已经安装了 VsCode 开发环境和终端界面&#xff0c;都是在线运行的&#xff0c;使用非常丝滑。 此外&#xff0c;服务器上还默认安装了 Docker, 这样就可以直接在 Docker 基础上运行一个 Kubernetes 本地集群了&#xff0c;还要啥自行车…

经典单方程计量经济学模型:一元线性回归模型-Eviews实现

下表为中国内地某年各地区税收Y与国内生产总值的GDP的统计资料。 地区YGDP 北京1435.79353.3 天津438.45050.4 河北618.313709.5 山西430.55733.4内蒙古347.96091.1 辽宁815.711023.5 吉林237.45284.7黑龙江3357065 上海1975.512188.9 江苏1894.825741.2 浙江1535.418780.4 安…

剖解环形链表1

环形链表 思路&#xff1a;我们知道在操场上跑步&#xff0c;若一个人跑的快&#xff0c;另一个人跑得慢&#xff0c;那么就一定会有相遇的那一刻&#xff0c;两人站在同一个位置&#xff0c;所以我们可以分别定义快慢指针&#xff0c;若快指针和慢指针相逢&#xff0c;就说明该…

梦幻西游端游如何查看挂机进度,GameViewer远程随时手机畅玩梦幻西游

原来用手机就可以免费玩梦幻西游端游&#xff1f;还可以随时查看游戏进度&#xff01;如果你喜欢玩梦幻西游端游&#xff0c;有总觉得出门在外不方面携带电脑&#xff0c;要想用手机实现随时随地查看梦幻西游的挂机进度&#xff0c;可以用网易GameViewer远程这款专为游戏玩家设…

望繁信科技携手甫瀚咨询共建流程挖掘产业生态

2023年&#xff0c;望繁信科技与甫瀚咨询达成战略合作并签署生态伙伴合作协议。双方将携手共同探索流程挖掘在各领域企业的应用场景&#xff0c;提供更全面及高效的流程挖掘解决方案&#xff0c;以助力企业在数字化转型浪潮中实现精益管理。 自2009年起&#xff0c;流程挖掘从…

深度学习:迁移学习

目录 一、迁移学习 1.什么是迁移学习 2.迁移学习的步骤 1、选择预训练的模型和适当的层 2、冻结预训练模型的参数 3、在新数据集上训练新增加的层 4、微调预训练模型的层 5、评估和测试 二、迁移学习实例 1.导入模型 2.冻结模型参数 3.修改参数 4.创建类&#xff…

windows 录音编码为flv格式时,pcm采样格式

这里使用的是0x3e&#xff0c;转换为二进制&#xff1a; 0 0 1 1 1 1 1 0 前四个字节为3&#xff0c;表示Linear Pcm, 后4个字节1 1 1 0 表示44100HZ采样&#xff0c; 16个bit&#xff0c;单声道。 故&#xff0c;windows 音频采样不支持48000HZ频率

基于Hive和Hadoop的电商消费分析系统

本项目是一个基于大数据技术的电商消费分析系统&#xff0c;旨在为用户提供全面的电商消费信息和深入的消费行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 S…

QT 获取视频帧Opencv获取清晰度

先展示结果&#xff1a; 1.获取摄像头的分辨率 mResSize.clear();mResSize camera_->supportedViewfinderResolutions();ui->comboBox_resulation->clear();int i0;foreach (QSize msize, mResSize) {qDebug()<<msize;ui->comboBox_resulation->addItem(…

9.27作业

顺序表 SeqList.h #ifndef SEQLIST_H #define SEQLIST_H #include <iostream> #include<memory.h> #include<stdlib.h> #include<string.h> using namespace std;//封装一个顺序表 template <typename T> class SeqList { private:T *ptr; …

如何高效精准地管理商标官文?

商标官文涵盖了商标从申请注册到后续维护的各个阶段所涉及的官方文件&#xff0c;如受理通知书、审查意见通知书、商标注册证等。这些官文不仅是商标权利的重要凭证&#xff0c;更是企业了解商标状态、应对各种情况的重要依据。有效的商标官文管理能够确保企业及时掌握商标动态…

Redis的数据类型和编码方式

目录 数据类型&#xff1a;编码方式String&#xff1a;hash&#xff1a;list&#xff1a;set&#xff1a;zset&#xff1a; 通过这个指令可以看到底层实现 数据类型&#xff1a; Redis底层实现上述数据结构的时候&#xff0c;会在源码层面&#xff0c;针对上述实现进行优化&am…

【Java】—— 多线程:随堂复习

目录 1. 几个概念 2. 如何创建多线程&#xff08;重点&#xff09; 3. Thread类的常用方法、线程的生命周期 4. 如何解决线程安全问题(重点、难点) 5. 同步机制相关的问题 6. 线程间的通信 1. 几个概念 程序(program)&#xff1a;为完成特定任务&#xff0c;用某种语言编…

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)

文件无壳 拖入IDA中 shiftF12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码 进入主函数看看 这段代码是一个简单的 C 语言程序&#xff0c;主要功能是接受用户输入的字符串作为“flag”&#xff0c;然后通过对输入的字符串进行一些处理和比较来验证是否输…