代码随想录训练营Day 56|力扣300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

1.最长递增子序列

视频讲解:动态规划之子序列问题,元素不连续!| LeetCode:300.最长递增子序列_哔哩哔哩_bilibili

代码随想录

代码: 

class Solution {
public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);// dp[i]表示以下标i结尾包括i的最长递增子序列的长度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[j] + 1,dp[i]);}}if(dp[i] > result) result = dp[i];}return result;}
};

 思路:这道题真的就是完全没有思路。

 我感觉精髓就在于dp数组的定义:

        dp[i]为以i为下标结尾的子序列(包括i)的最长递增子序列。有了这个定义,才能知道dp数组怎么写,如果是其它的定义应该还是挺难写的。

dp数组的递推公式:

        首先要清楚子序列的含义,子序列不要求连续,只要求顺序!!如果我们要求以i为结尾的最长递增子序列,那么它可以接上任何在以它之前下标为结尾的子序列(只要nums[i]大于nums[j])。所以我们在求dp[i]的时候要遍历在在这之前的所有dp数组的值,满足条件的时候,去取其中的最大值。

        同时,因为dp数组只是以i结尾的最长子序列的长度,它不是整个数组的最长子序列的长度,所有我们还要在所有的dp数组元素中取最大值,这里使用result来保存。

dp数组初始化:按照dp数组的含义,所有的元素应该初始化为1.

遍历顺序:对应i的循环——必须正序遍历;j的循环——都可以。

2.最长连续递增序列

视频讲解:动态规划之子序列问题,重点在于连续!| LeetCode:674.最长连续递增序列_哔哩哔哩_bilibili

代码随想录

代码: 

class Solution {
public:int findLengthOfLCIS(vector<int>& nums) {vector<int> dp(nums.size(),1);int result = 1;// dp[i]为以i下标为结尾的最长连续递增子序列的长度for(int i = 1; i < nums.size(); i++){if(nums[i] > nums[i - 1]) dp[i] = dp[i - 1] + 1;if(dp[i] > result) result = dp[i];}return result;}
};

 思路:

这道题和上一题的区别就是,这次必须要求连续。我们只能在以前一个元素为结尾的子序列上递增。不需要那个j的循环了。其余的都一样。

dp数组的含义:以下标i为结尾(包括下标i)的最长连续递增子序列的长度

dp数组的初始化:按照含义,全部初始化为1

dp数组的递推公式:如果当前元素值大于前一个元素,就可以在前一个dp元素值上加一

dp数组的遍历顺序:正序遍历

注意:dp数组只是以下标i为结尾的最长连续递增子序列,但是题上求的是整个数组的最长连续递增子序列。所以还是要用result来记录dp数组里的最大值

3.最长重复子数组

视频讲解:动态规划之子序列问题,想清楚DP数组的定义 | LeetCode:718.最长重复子数组_哔哩哔哩_bilibili

代码随想录

代码:

class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {int result = 0;vector<vector<int>> dp(nums1.size() + 1,vector(nums2.size() + 1,0));// dp[i][j] 表示以nums1以下标i - 1为结尾,和nums2以下标j - 1为结尾的子数组的最长重复子串的长度// 其中dp[0][j]和dp[i][0]都没有实际意义,用i-1和j-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;if(dp[i][j] > result) result = dp[i][j];}}}return result;}
};

思路: 

最长重复子数组——子数组其实就是连续的子序列。

dp数组的含义:

        dp[i][j] 表示以nums1以下标i - 1为结尾,和nums2以下标j - 1为结尾的子数组的最长重复子串的长度;其中dp[0][j]和dp[i][0]都没有实际意义,用i-1和j-1主要是为了方便初始化。这次是二维的数组,因为要涉及到两个数组的最长重复子数组。

dp数组的递推公式:

        因为是dp数组是以下标i - 1和j - 1结尾的最长重复子数组,所以我们的判断条件是num1[i - 1]和nums2[j - 1]是否相等,如果相等就在dp[i - 1][j - 1]的基础上加1。

        最后也是一样,要求这些dp数组元素中的最大值。

 dp数组的初始化:dp[0][j]和dp[i][0]都没有实际意义,而且为了能够推出符合实际意义的dp[1][1]应该把这些元素初始化为0

dp数组的遍历顺序:正序遍历,两次for循环可以反。

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

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

相关文章

快递一键查询,只需快递单号,轻松掌握全程物流信息,让您的包裹追踪无忧!

在快节奏的现代生活中&#xff0c;快递已经成为我们生活中不可或缺的一部分。无论是网购的宝贝、亲朋好友寄来的礼物&#xff0c;还是工作中的紧急文件&#xff0c;快递都承载着我们的期待和需要。然而&#xff0c;面对众多的快递公司和复杂的查询流程&#xff0c;如何快速、准…

深度解读ChatGPT:原理、应用与未来探索

本文将深入剖析ChatGPT&#xff0c;包括其工作原理、技术栈、训练方法、应用场景、优势与挑战&#xff0c;以及未来发展方向。通过详尽的分析和案例&#xff0c;帮助读者全面理解这一先进语言模型。 文章目录 引言2. ChatGPT概述2.1 什么是ChatGPT2.2 ChatGPT的应用场景3. 技术…

Docker:安装 Orion-Visor 服务器运维的技术指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 Orion-Visor 是一种用于管理和监控容器的工具。它提供了一个直观的界面&#xff0c;用于查看容器的状态、资源使用情况以及日志等信息。在这篇技术博客中&#xff0c;我们将介绍如何…

南通logo的标志设计详解!教你打造独特品牌标识!

在品牌设计中&#xff0c;南通logo的标志设计是至关重的环。一个特而吸引力的标志能够让品牌在市场中脱颖而出&#xff0c;并传达品牌的价值和特点。 那么&#xff0c;该如何进行南通logo的标志设计呢?在本文中&#xff0c;将详细讲南通logo的标志设计过程和要点&#xff0c;…

微信小程序双层/多层 wx:for 循环嵌套,关于内外层的 index 和 item ;data-index 传递两个参数

微信小程序用 wx:for 循环可以快速将后端 js 的数组快速显示到前端&#xff1b; 那假如数组中嵌套数组&#xff1b;就存在内外层两层及以上的多层嵌套循环了。 那么如果两层的嵌套式循环 index 究竟是属于哪一层呢&#xff1f;item 又属于哪一个呢&#xff1f; <view><…

“新E代弯道王”MAZDA EZ-6亮相2024重庆国际车展

6月7日-6月16日&#xff0c;第二十六届重庆国际车展隆重开幕&#xff0c;合资品牌首款基于纯电平台的新能源轿车MAZDA EZ-6&#xff08;以下称EZ-6&#xff09;领衔长安马自达全系车型亮相N8馆T01展台。车展期间&#xff0c;重庆及周边地区的马自达用户、粉丝、车友可前往长安马…

【Kafka专栏 03】Kafka是如何保证幂等性?

作者名称&#xff1a;夏之以寒 作者简介&#xff1a;专注于Java和大数据领域&#xff0c;致力于探索技术的边界&#xff0c;分享前沿的实践和洞见 文章专栏&#xff1a;夏之以寒-kafka专栏 专栏介绍&#xff1a;本专栏旨在以浅显易懂的方式介绍Kafka的基本概念、核心组件和使用…

代码签名证书怎么申请?有什么条件?

代码签名证书是由证书颁发机构(CA)颁发的数字证书&#xff0c;用于验证组织/软件作者的身份并确保软件/应用程序/程序的完整性。它们包含组织的数字签名、组织名称和时间戳&#xff08;如果需要&#xff09;。 软件开发人员利用代码签名证书将其数字签名放在应用程序、可执行文…

从ibd文件恢复MySQL数据

从ibd文件恢复MySQL数据 1.背景2.操作步骤2.1 备份源数据库的ibd文件2.2 准备数据库建表语句2.3 重新安装新数据库2.4 新数据库恢复数据具体步骤 3.常见错误3.1 权限问题3.2 报错不存在CFG文件3.3 通过ibd文件恢复数据后自增主键问题报冲突 1.背景 前段时间&#xff0c;我的云…

弱智吧”,人类抵御AI的最后防线

“写遗嘱的时候错过了deadline怎么办&#xff1f;” “怀念过去是不是在时间的长河里刻舟求剑&#xff1f;” “英语听力考试总是听到两个人在广播里唠嗑&#xff0c;怎么把那两个干扰我做题的人赶走&#xff1f;” 以上这些饱含哲学但好像又莫名其妙的问题&#xff0c;出自…

【简单学习一下卷积神经网络】-基于肆十二的高考例子

前言一、白话卷积神经网络总结 前言 【参考】 主要是P2⇨手把手教你用tensorflow2训练自己的数据集 -------2024/5/4 一、白话卷积神经网络 高考前需要大量的做题训练---->相当于数据集。 做题过程中【于标准答案进行比对】产生的错题⇨loss&#xff08;误差&#xff09; 回…

SkyWalking之P0核心业务场景输出调用链路应用

延伸扩展&#xff1a;XX核心业务场景 路由标签打标、传播、检索 链路标签染色与传播 SW: SkyWalking的简写 用户请求携带HTTP头信息X-sw8-correlation “X-sw8-correlation: key1value1,key2value2,key3value3” 网关侧读取解析HTTP头信息X-sw8-correlation&#xff0c;然后通过…

C++九州控制地址结构else 陈述

else如同英文字义&#xff0c;九州qa98錪cc否则的意思&#xff0c;通常放在if的后面&#xff0c;若if的条件为真&#xff0c;就执行if底下大括弧围起来的程式区块&#xff0c;若为假&#xff0c;就执行else底下大括弧围起来的程式区块。 形式如下&#xff1a; 这个概念用于二选…

JavaWeb期末知识点复习

th表头(会居中加粗而已&#xff0c;别的和td一样 ) tr表格行 td单元格 <caption>标题</...> <table> <tr>行 <th> </th> <td align"center" valign"middle">每列</td> <td> <tr> <table&…

imx93 系统烧录

1. 硬件环境 iMX 93 evk 开发板 ubuntu 20.04 系统&#xff0c;x86_64 2. 交叉编译可能需要的软件包 配置交叉编译器的前提&#xff0c;我的配置如下&#xff1a; export ARCHarm64 export CROSS_COMPILEaarch64-none-linux-gnu- export PATH$PATH:/opt/work/sdk/arm-gnu-…

盲盒小程序推广与运营策略的挑战

随着盲盒经济的兴起&#xff0c;越来越多的商家开始关注并尝试开发盲盒小程序。然而&#xff0c;在推广和运营盲盒小程序的过程中&#xff0c;我们也不可避免地会遇到一些挑战。下面&#xff0c;我将就用户获取、留存以及活跃度提升等方面&#xff0c;探讨这些挑战及可能的应对…

LayerNorm和RMSNorm实现代码

下面是详细实现的LayerNorm和RMSNorm代码&#xff0c;并附有详细注释。 LayerNorm 实现 LayerNorm的主要思想是对每个样本的每一层进行归一化。具体的实现如下&#xff1a; import torch import torch.nn as nnclass LayerNorm(nn.Module):def __init__(self, d_model, eps1…

动态内存管理<C语言>

导言 在C语言学习阶段&#xff0c;指针、结构体和动态内存管理&#xff0c;是后期学习数据结构的最重要的三大知识模块&#xff0c;也是C语言比较难的知识模块&#xff0c;但是“天下无难事”&#xff0c;只要认真踏实的学习&#xff0c;也能解决&#xff0c;所以下文将介绍动态…

镜舟科技与千丁数科开展战略洽谈,探索智慧空间与数据的深度融合

数据作为当下最重要的生产要素之一&#xff0c;数据分析与智慧空间科技的结合正成为推动企业发展的新引擎 。 5 月 15 日&#xff0c;镜舟科技与千丁数科在北京开展战略合作洽谈。本次会议旨在探索双方在智慧空间科技和数据分析领域的合作潜力&#xff0c;共同推进数字经济的新…

Gartner发布企业人工智能治理指南:以企业通用治理框架为基础,确定针对框架六大支柱的AI特定因素

人工智能&#xff08;AI&#xff09;不仅发展迅速而且可能会放大人类的偏见&#xff0c;如何对其实施有效的治理是数据和分析领导者面临的一个挑战。本文提供了一种全面的方法&#xff0c;可用于扩展企业的治理框架&#xff0c;引入信任、透明度和多样性等AI特定的考虑因素。 主…