代码随想录Day56 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

代码随想录Day56 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

  • 300.最长递增子序列
  • 674.最长连续递增序列
  • 718.最长重复子数组

300.最长递增子序列

文档讲解:代码随想录
视频讲解: 动态规划之子序列问题,元素不连续!| LeetCode:300.最长递增子序列
状态

  1. dp数组含义
    dp[j] 表示 nums[j]之前的最长子序列长度
  2. 递推关系
    对于在0-j之间的一个数下标i,如果nums[j] > nums[i] 那么dp[j] = dp[i]+1
dp[j] = max(dp[i]+1,dp[j]);
  1. 初始化
    dp[0] = 1;
  2. 遍历顺序
    从前向后
  3. 打印dp
class Solution {
public:int lengthOfLIS(vector<int>& nums) {int len = nums.size();if(len == 0) return 0;vector<int> dp(len,1);int res = 1;//对每个位置的数,比较其前面的所有数,然后更新dpfor(int i = 1;i<len;i++){for(int j = 0;j<i;j++){if(nums[i] > nums[j]){dp[i] = max(dp[i],dp[j]+1);}if(dp[i] > res){res = dp[i];}}}return res;}
};

使用res来接受结果,因为结果不会存储在最后一个数值位置

674.最长连续递增序列

文档讲解:代码随想录
视频讲解: 动态规划之子序列问题,重点在于连续!| LeetCode:674.最长连续递增序列
状态

与上一题主要是递推公式的区别。这题要求连续那说明只有nums[i] > nums[i-1] dp[i] = dp[i-1]+1

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

718.最长重复子数组

文档讲解:代码随想录
视频讲解: 动态规划之子序列问题,想清楚DP数组的定义 | LeetCode:718.最长重复子数组
状态

本题需要比较两个数组的重复部分长度,对于dp数组来说就需要使用二维dp两个维度分别表示两个数组,实际上dp数组之间的递推关系只有对角线元素,所以可以进行压缩降为一维

  1. dp数组
    dp[i][j] 表示 nums1 和 nums2 两个数组分别以nums1[i] 和 nums2[j] 结尾时, 最长的重复子串长度
  2. 递推关系
    如果nums[1] == nums2[j] 那么 dp[i][j] = dp[i-1][j-1]+1
  3. 初始化
    对于 i=0 的情况,遍历nums2 初始化dp[0][j]
    对于 j=0 的情况,遍历nums1 初始化dp[i][0]
  4. 遍历顺序
    从前向后
  5. 打印dp
//dp[i][j] 表示A[i] B[j] 结尾的两个数组的最长相对子数组的长度
//所以如果A[i] == B[j] 那么 dp[i][j] = dp[i-1][j-1] + 1
class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>> dp(nums1.size(),vector<int>(nums2.size()));//初始化for(int j = 0;j<nums2.size();j++){if(nums1[0] == nums2[j]){dp[0][j] = 1;}}for(int i = 0;i<nums1.size();i++){if(nums1[i] == nums2[0]){dp[i][0] = 1;}}int res = 0;//遍历for(int i = 0;i<nums1.size();i++){for(int j=0;j<nums2.size();j++){if(nums1[i] == nums2[j] && i>0 && j>0){dp[i][j] = dp[i-1][j-1]+1;}res = max(res,dp[i][j]);}}return res;}
};

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

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

相关文章

大处着手、大小结合!现货黄金短线趋势如何判断?

现货黄金以交易灵活而著称&#xff0c;但是投资者发现&#xff0c;现货黄金的短期行情是多变的&#xff0c;要捕捉到现货黄金短期趋势其实也不容易。下面我们就来讨论一下判断现货黄金短线趋势的方法&#xff0c;这个方法的关键在于“大小结合”。 大指的是基本分析。很多投资者…

【leetcode】贪心算法介绍

详细且全面地分析贪心算法常用的解题套路、数据结构和代码逻辑如下&#xff1a; 找最值型&#xff1a; 每一步选择都是局部最优解&#xff0c;最后得到的结果就是全局最优解。常用于找零钱问题、区间覆盖问题等。一般情况下&#xff0c;可以通过排序将数据进行处理&#xff0c;…

腾讯云助力酒店IT系统上云,实现出海业务的双重优势

潮起潮涌&#xff0c;随着时代浪潮的翻涌&#xff0c;生活处处可见是巨大的变化&#xff0c;衣食住行都有了更多更大的需求&#xff0c;出门旅游观赏当地风景品尝特色美食的前提是要住好&#xff0c;只有休息好了才有更多的精力去游玩。酒店系统的升级上云让登记变得更加便捷&a…

【机器学习笔记】13 降维

降维概述 维数灾难 维数灾难(Curse of Dimensionality)&#xff1a;通常是指在涉及到向量的计算的问题中&#xff0c;随着维数的增加&#xff0c;计算量呈指数倍增长的一种现象。在很多机器学习问题中&#xff0c;训练集中的每条数据经常伴随着上千、甚至上万个特征。要处理这…

python opencv学习路线

目录 一:模块简介 二:图像读取 三:图像处理 四:图像识别

vue3总结

1 setup 概述 setup是Vue3中一个新的配置项个函数, 包含数据、方法等&#xff0c;是组合api的“舞台”。 特点如下&#xff1a; setup函数返回的对象中的内容&#xff0c;可直接在模板中使用。setup中访问this是undefined。setup函数会在beforeCreate之前调用&#xff0c;它…

新版本cesium的注意点

之前基于1.99版本写了一套插件&#xff0c;最近想替换成目前的新版本&#xff08;114&#xff09;&#xff0c;发现有很多写法都不能用了&#xff0c;这里做一下记录。 100版本发布了cesium/engine&#xff0c;cesium/widgets&#xff0c;引用方式上就会有些变化&#xff1b;1…

conda 所有的命令及其讲解

Conda 是一个开源的包管理器和环境管理器&#xff0c;可以用于安装、运行和升级跨平台的软件包和环境。Conda 很流行于数据科学、机器学习、科学计算等领域&#xff0c;因为它能够快速地安装、管理和部署软件包和环境。以下是 Conda 的一些主要命令及其简要说明&#xff1a; 环…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee&#xff0c;根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库&#xff0c;选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

React 中的类组件

组件分为内置原生组件和自定义组件 内置组件p h1 span type字符串自定义组件 类型是一个 函数 ,类组件的父类Component的原型上有一个属性 isReactComponent{} 自定义组件的名称必须是大写字母开头 自定定组件的返回值有且只能一个根元素 import React from ./react; import …

教师专业发展的五个阶段

每当人们谈论教师&#xff0c;总会联想到“传道授业解惑”的崇高形象。但教师的专业成长&#xff0c;绝非一蹴而就。今天&#xff0c;就让我们一起探秘教师专业发展的五个阶段&#xff0c;看看一位普通教师是如何历练成为教育行家的。 阶段一&#xff1a;新手摸索期 初入教育行…

走进科学系列之遭遇鬼打墙的OUTLOOK

网管小贾 / sysadm.cc 正值春运&#xff0c;车站里熙熙攘攘、人头攒动。 鲍勃和约瑟夫正在候车室&#xff0c;等待检票。 “嗨&#xff01;约瑟夫&#xff01;快来看看&#xff0c;我的电脑出问题了&#xff01;” “得了吧&#xff0c;马上就要检票上车了&#xff0c;你就不…

IP显示地址与实际地址不一致,你知道为什么吗?

在数字化时代&#xff0c;IP地址作为网络世界中的“身份证”&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到这样一个现象&#xff1a;IP显示地址与实际地址不一致。这究竟是怎么一回事呢&#xff1f;虎观代理小二二将带您一起探究这一现象背后的原因。 1、…

nacos用作注册中心

nacos除了用作配置中心&#xff0c;即可以将配置信息由配置文件转移到nacos上&#xff0c;更便于修改和维护外&#xff0c;更重要的&#xff0c;是用作微服务的注册中心。没有这类中间件&#xff0c;微服务玩不转。 微服务架构也者&#xff0c;就是有好多好多的微服务&#xf…

调用接口时不时出现 Error: socket hang up

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 今天采用golang创建了一个http服务&#xff0c;准备对若干接口进行测试。 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在测试第一个接口时&#xff0c;发现采用postman调用接口…

Ansible yum模块 主要用于软件安装

目录 选项 实例 安装一个tree实例卸载一个 tree 选项 name   #所安装的包的名称 state  #present—>安装&#xff0c; latest—>安装最新的, absent—> 卸载软件。 update_cache  #强制更新yum的缓存 conf_file  #指定远程yum安装时所依赖的配置文件&…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展&#xff0c;车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用&#xff0c;它能够满足无人驾驶应用的低时延、高速率和实时控制等需求&#xff0c;进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

CF1172A Nauuo and Cards 题解 贪心

Nauuo and Cards 传送门 Nauuo is a girl who loves playing cards. One day she was playing cards but found that the cards were mixed with some empty ones. There are n n n cards numbered from 1 1 1 to n n n, and they were mixed with another n n n empty…

从 AGP 4.1.2 到 7.5.1——XmlParser、GPathResult、QName 过时

新年首发&#xff0c; 去年的问题&#xff0c;今年解决~ 问题 & 排查 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task :app:processCommonReleaseManifest. > org.xml.sax.SAXParseException; lineNumber: 1; columnNu…

【申请体验Sora】OpenAI Red Teaming Network application

网址&#xff1a;https://openai.com/form/red-teaming-network 使用Gmail &#xff0c; 国家选美国 两个问题&#xff1a; Why are you interested in joining the OpenAI Red Teaming Network? I’m eager to experience the powerful allure of Sora, which I believe wi…