代码随想录算法训练营第四十三天|Day43 动态规划

300.最长递增子序列

视频讲解:https://www.bilibili.com/video/BV1ng411J7xP

https://programmercarl.com/0300.%E6%9C%80%E9%95%BF%E4%B8%8A%E5%8D%87%E5%AD%90%E5%BA%8F%E5%88%97.html

思路

#define max(a, b) ((a) > (b) ? (a) : (b))
int lengthOfLIS(int* nums, int numsSize) {if(numsSize <= 1){return numsSize;}int dp[numsSize];for(int i = 0; i < numsSize; i++){dp[i]=1;}int result = 1;for (int i = 1; i < numsSize; ++i) {for (int j = 0; j < i; ++j) {if(nums[i] > nums[j]){dp[i] = max(dp[i], dp[j] + 1);}if(dp[i] > result){result = dp[i];}}}return result;
}

学习反思

用于求解给定数组的最长递增子序列的长度。其中,dp数组用于存储以每个元素为结尾的最长递增子序列的长度。代码的逻辑比较简单,首先对dp数组进行初始化,将每个元素的初始值设为1,表示每个元素自身就是一个子序列。然后,使用双重循环对每个元素进行遍历,比较当前元素与之前元素的大小关系。如果当前元素大于之前元素,说明可以将当前元素加入到递增子序列中,此时更新dp数组的值为之前元素对应的最长递增子序列的长度加1。同时,更新最终结果result的值为dp数组中的最大值。最后,返回result即为最长递增子序列的长度。这段代码的时间复杂度为O(n^2),空间复杂度为O(n)。

674. 最长连续递增序列

视频讲解:https://www.bilibili.com/video/BV1bD4y1778v

https://programmercarl.com/0674.%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.html

思路

int findLengthOfLCIS(int* nums, int numsSize) {if(numsSize == 0){return 0;}int dp[numsSize];for(int i = 0; i < numsSize; i++){dp[i] = 1;}int result = 1;for (int i = 1; i < numsSize; ++i) {if(nums[i] > nums[i - 1]){dp[i] = dp[i - 1] + 1;}if(dp[i] > result){result = dp[i];}}return result;
}

学习反思

用于求解给定数组的最长连续递增子序列的长度。其中,dp数组用于存储以每个元素为结尾的最长连续递增子序列的长度。代码的逻辑也比较简单,首先判断数组是否为空,如果为空则返回0。然后,对dp数组进行初始化,将每个元素的初始值设为1,表示每个元素自身就是一个连续递增子序列。接着使用单层循环遍历数组,比较当前元素与前一个元素的大小关系。如果当前元素大于前一个元素,说明可以将当前元素加入到连续递增子序列中,此时更新dp数组的值为前一个元素对应的最长连续递增子序列的长度加1。同时,更新最终结果result的值为dp数组中的最大值。最后,返回result即为最长连续递增子序列的长度。这段代码的时间复杂度为O(n),空间复杂度为O(n)。

718. 最长重复子数组

视频讲解:https://www.bilibili.com/video/BV178411H7hV

https://programmercarl.com/0718.%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.html

思路

int findLength(int* nums1, int nums1Size, int* nums2, int nums2Size) {int dp[nums1Size + 1][nums2Size + 1];memset(dp, 0, sizeof(dp));int result = 0;for (int i = 1; i <= nums1Size; ++i) {for (int j = 1; j <= nums2Size; ++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个元素和nums2数组前j个元素的最长公共子序列的长度。代码的逻辑也比较简单,首先初始化dp数组为0。然后使用双层循环遍历两个数组,如果当前元素相等,则将dp[i][j]更新为dp[i-1][j-1] + 1,即将当前元素加入到最长公共子序列中。同时,更新最终结果result的值为dp数组中的最大值。最后,返回result即为最长公共子序列的长度。这段代码的时间复杂度为O(mn),其中m为nums1数组的长度,n为nums2数组的长度。空间复杂度为O(mn)。

总结

加油!!!

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

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

相关文章

Axure网络短剧APP端原型图,竖屏微剧视频模版40页

作品概况 页面数量&#xff1a;共 40 页 使用软件&#xff1a;Axure RP 9 及以上&#xff0c;非软件无源码 适用领域&#xff1a;短剧、微短剧、竖屏视频 作品特色 本作品为网络短剧APP的Axure原型设计图&#xff0c;定位属于免费短剧软件&#xff0c;类似红果短剧、河马剧场…

【LeetCode】【算法】560. 和为 K 的子数组

LeetCode 560. 和为 K 的子数组 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 思路 思路&#xff1a;前缀和 定义数组preSum[nums.length1]&#xff0c;在里面计算nums…

【Spring】本地事务

一、事务的基本性质 原子性&#xff1a;一系列操作整体不可拆分&#xff0c;要么同时成功&#xff0c;要么同时失败。&#xff08;下订单、减库存、减积分&#xff09;一致性&#xff1a;数据在事务的前后&#xff0c;业务整体一致。&#xff08;存取钱的总数量&#xff09;隔…

从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111

从零开始的 Hugging Face 项目&#xff1a;我的首个在线 SQL 查询工具之旅 作为一名 AI 初学者&#xff0c;我最近完成了一个意义非凡的项目&#xff1a;在 Hugging Face Spaces 上构建了一个简单却实用的在线 SQL 查询工具。这个项目不仅让我了解了 Hugging Face 平台的核心功…

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建 &#xff08;1&#xff09;虚拟机 ubuntu 要使用桥接模式&#xff0c;不能使用其他模式 &#xff08;2&#xff09;通过网线将PC和开发板网口直连:这样的连接&#xff0c;开发板是无法连接外网的 &#xff08;3&#xff…

C语言第十一周课——函数的调用

目录 一、冒泡法排序 二、二分法查找 一、冒泡法排序 通过调用函数来实现冒泡法 #include<stdio.h> // 定义数组长度 #define SIZE 3 void bubbleSort(int arr[], int n);int main() {int arr[SIZE];int i;// 从控制台输入数字到数组printf("请输入%d个整数&#x…

C# 有趣的小程序—桌面精灵详细讲解

C# 桌面精灵详细讲解 最近写了一个简化版桌面精灵&#xff0c;效果如图所示&#xff0c;可以实现切换动画&#xff0c;说话、鼠标拖动&#xff0c;等功能。具体如何做&#xff0c;我发布了一个资源里面包含ppt详解、源代码以及动画素材。放心吧&#xff0c;免费的&#xff0c;…

【系统架构设计师】真题论文: 论软件可靠性设计与应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2009年 试题4)解题思路论文素材参考软件可靠性概念软件可靠性的重要意义影响软件可靠性的因素软件可靠性设计方法真题题目(2009年 试题4) 目前在企业中,以软件为核心的产品得到了广泛的应用。随着系…

如何开发查找附近地点的微信小程序

我开发的是找附近卫生间的小程序。 在现代城市生活中&#xff0c;找到一个干净、方便的公共卫生间有时可能是一个挑战。为了解决这个问题&#xff0c;我们可以开发一款微信小程序&#xff0c;帮助用户快速找到附近的卫生间。本文将介绍如何开发这样一款小程序&#xff0c;包…

视觉SLAM数学基础

本文系统梳理从相机成像模型&#xff0c;通过不同图像帧之间的构造几何约束求解位姿变换&#xff0c;再根据位姿变换和匹配点还原三维坐标的过程&#xff0c;可以作为基于特征点法的视觉SLAM的数学基础。 1、相机成像模型 1.1、针孔相机模型 实际相机的成像方式通常很复杂&a…

19.(开发工具篇mysql库)mysql锁表问题解决

1&#xff1a;查看锁表情况 show OPEN TABLES where In_use > 0; 2&#xff1a;查看所有进程命令 show processlist 3&#xff1a;杀对应进程&#xff08;通过host&#xff0c;db找对应的ID&#xff09; kill 57303

计算机新手练级攻略——如何搜索问题

目录 计算机学生新手练级攻略——如何搜索问题1.明确搜索意图2.使用精确关键词3.使用专业引擎搜索4.利用好技术社区1. Stack Overflow2. GitHub3. IEEE Xplore4. DBLP 5.使用代码搜索工具1. GitHub 代码搜索2. Stack Overflow 代码搜索3. Papers with Code4. IEEE Xplore 6.查阅…

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模型&a…

““和“*“:身怀绝技的双飞客

"&"和"*"是C语言里面的两个斜杠青年&#xff0c;不同的形式具有不同的作用。 一、"&"运算符 1&#xff0e;按位与运算符&#xff08;Bitwise AND operator&#xff09; 对两个操作数的每一位进行逐位比较&#xff0c;相应位都为1时&a…

大模型日报|6 篇必读的大模型论文

1.华为推出科学智能体 Agent K v1.0&#xff0c;已达 Kaggle 大师水平 在这项工作中&#xff0c;来自华为诺亚方舟实验室和伦敦大学学院的研究团队提出了 Agent K v1.0&#xff0c;它是一个端到端自主数据科学智能体&#xff08;agent&#xff09;&#xff0c;旨在对各种数据科…

Redis在docker中的主从,哨兵配置

主从配置 docker 中redis服务启动&#xff0c;将配置文件和数据挂载到 redisData中,记得先创建好redis.conf docker run -p 6379:6379 \--name redis \-v /root/redisData/data:/data \-v /root/redisData/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /et…

游戏中的设计模式及杂项

概述 如果要做以下游戏功能会用到哪些设计模式。比如创建一个人物角色&#xff0c;这个角色可以装备刀&#xff0c;然后角色可以用刀砍怪物&#xff0c;造成流血。 对于这个游戏功能&#xff0c;可以使用以下设计模式&#xff1a; 工厂模式&#xff08;Factory Pattern&#x…

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档&#xff0c;当时刚到公司&#xff0c;发现MySQL的业务核心库&#xff0c;超过亿条的有7张表&#xff0c;最大的表有9亿多条&#xff0c;有37张表超过5百万条&#xff0c;部分表行数如下&#xff1a; 在测试的MySQL环境 &#xff1a; pt-archiv…

cache(二)直接缓存映射

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解&#xff1f; PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 0. 缓存定义 这张图展示了缓…

探索Apache Spark:现代数据处理的闪电利剑

在大数据技术的快速发展中&#xff0c;Apache Spark凭借其高效的内存计算和友好的编程模型&#xff0c;成为了现代数据处理领域中的一颗耀眼明星。Spark的出现填补了批处理和实时处理之间的空白&#xff0c;使得数据分析任务能够以前所未有的速度和效率得以执行。本文将深入剖析…