【代码随想录】【算法训练营】【第49天】 [300]最长递增子序列 [674]最长连续递增序列 [718]最长重复子数组

前言

思路及算法思维,指路 代码随想录。
题目来自 LeetCode。

day 49,周二,坚持不了一点~

题目详情

[300] 最长递增子序列

题目描述

300 最长递增子序列
300 最长递增子序列

解题思路

前提:最大递增子序列的长度
思路:动态规划 dp[i]: 在数组的[0, i]中最长严格递增子序列的长度,j遍历[0, i], 寻找其中的递增子序列, dp[i] = max(dp[i], dp[j] + 1)
重点:递推公式的推导、dp数组初始化

代码实现

C语言
动态规划
// 动态规划 dp[i]: 在数组的[0, i]中最长严格递增子序列的长度
// j遍历[0, i], 寻找其中的递增子序列, dp[i] = max(dp[i], dp[j] + 1)int maxFun(int p1, int p2)
{return p1 > p2 ? p1 : p2;
}int lengthOfLIS(int* nums, int numsSize) {int dp[numsSize];// dp初始化dp[0] = 1;int result = dp[0];// 遍历for (int i = 1; i < numsSize; i++) {dp[i] = 1;for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {dp[i] = maxFun(dp[i], dp[j] + 1);}}result = maxFun(result, dp[i]);}return result;
}

[674] 最长连续递增序列

题目描述

674 最长连续递增序列
674 最长连续递增序列

解题思路

前提:最长连续递增子序列的长度
思路:动态规划 dp[i]: 在数组的[0, i]中最长连续递增子序列的长度,if (nums[i] > nums[i-1]) dp[i] = dp[i - 1] + 1
重点:递推公式的推导、dp数组初始化

代码实现

C语言
动态规划
// 动态规划 dp[i]: 在数组[0,i]中连续递增子序列的最大长度
// if (nums[i] > nums[i-1]) dp[i] = dp[i - 1] + 1int findLengthOfLCIS(int* nums, int numsSize) {int dp[numsSize];// dp初始化dp[0] = 1;int result = dp[0];// 遍历for (int i = 1; i < numsSize; i++) {if (nums[i] > nums[i - 1]) {dp[i] = dp[i - 1] + 1;} else {dp[i] = 1;}result = result < dp[i] ? dp[i] : result;}return result;
}
贪心算法
// 贪心算法, 递增则count++,否则count = 1int findLengthOfLCIS(int* nums, int numsSize) {int count = 1;int result = count;// 遍历for (int i = 1; i < numsSize; i++) {if (nums[i] > nums[i - 1]) {count++;} else {count = 1;}result = result < count ? count : result;}return result;
}

[718] 最长重复子数组

题目描述

718 最长重复子数组
718 最长重复子数组

解题思路

前提:最长重复子数组
思路:动态规划 滚动数组dp[j]: nums1的[0, i-1]与nums2的[0, j-1]的最长重复子数组的长度, if (nums[i-1] == nums[j-1]) dp[j] = dp[j-1]+1
重点:递推公式的推导、dp数组初始化

代码实现

C语言
dp[i][j]
// 动态规划 dp[i][j]: nums1的[0, i-1]与nums2的[0, j-1]的最长重复子数组的长度
// if (nums[i-1] == nums[j-1]) dp[i][j] = dp[i-1][j-1]+1int findLength(int* nums1, int nums1Size, int* nums2, int nums2Size) {int dp[nums1Size + 1][nums2Size + 1];int result = 0;// dp数组初始化,实际从1开始for (int i = 0; i <= nums1Size; i++) {dp[i][0] = 0;}for (int j = 1; j <= nums2Size; j++) {dp[0][j] = 0;}// 遍历for (int i = 1; i <= nums1Size; i++) {for (int j = 1; j <= nums2Size; j++) {dp[i][j] = 0;if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;}result = result < dp[i][j] ? dp[i][j] : result;}}return result;
}
dp][j]
// 动态规划 滚动数组dp[j]: nums1的[0, i-1]与nums2的[0, j-1]的最长重复子数组的长度
// if (nums[i-1] == nums[j-1]) dp[j] = dp[j-1]+1int findLength(int* nums1, int nums1Size, int* nums2, int nums2Size) {int dp[nums2Size + 1];int result = 0;// dp数组初始化,实际从1开始for (int k = 0; k <= nums2Size; k++) {dp[k] = 0;}// 遍历nums1, 并从后往前遍历nums2for (int i = 1; i <= nums1Size; i++) {for (int j = nums2Size; j >= 1; j--) {dp[j] = 0;if (nums1[i - 1] == nums2[j - 1]) {dp[j] = dp[j - 1] + 1;}result = result < dp[j] ? dp[j] : result;}}return result;
}

今日收获

  1. 动态规划

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

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

相关文章

RedHat9 | podman容器-续集

一、管理容器存储和网络资源 使用容器来运行简单的进程&#xff0c;然后退出。可以配置容连续运行特定服务&#xff0c;如数据库服务。如果持续运行服务&#xff0c;需要向容器添加更多的资源&#xff0c;如持久存储或对其他网络的访问权限。 针对企业容器平台上的大型部署&a…

汽车零部件材料耐候性测试氙光太阳辐射系统试验箱

概述 汽车零部件等领域的材料耐候性测试是一项关键的质量控制环节&#xff0c;它关乎汽车部件在各种气候条件下的性能表现和寿命。塑料件光照老化实验箱&#xff0c;即氙灯老化试验箱&#xff0c;在其中扮演着至关重要的角色。通过模拟自然环境中的光照、温度、湿度等条件&…

遇到多语言跨境电商系统源码问题?这里有解决方案!

从手机到电脑&#xff0c;从线下到线上&#xff0c;如今&#xff0c;跨境电商正在打破地域界限&#xff0c;成为全球贸易的新引擎。在这个全球化的背景下&#xff0c;跨境电商平台的运营也面临着一系列的挑战&#xff0c;其中之一就是多语言问题。如果你遇到了多语言跨境电商系…

【HALCON】如何实现hw窗口自适应相机拍照成像的大小

前言 在开发一个喷码检测软件的时候碰到相机成像和hw窗体的大小不一致&#xff0c;hw太小显示不完全成像的图片&#xff0c;这使得成像不均匀&#xff0c;现场辨别起来比较不直观&#xff0c;因此需要对其进行一个调整。 解决 省略掉读取图片的环节&#xff0c;我们只需要将…

全国产化飞腾模块BIOS下修复系统启动文件

1、背景介绍 全国产飞腾模块采用麒麟信安操作系统&#xff0c;当系统下面的grub.cfg文件被用户误操作导致无法启动时&#xff0c;可以在BIOS下通过U盘中备份的grub.cfg替换硬盘上原来的grub.cfg文件&#xff0c;从而实现启动。 2、操作步骤 首先进入BIOS命令行模式&#xff…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富&#xff0c;主要分为以下几种类型&#xff0c;每种类型都有其特定的用途和特性。 一、整型数值 1.定义&#xff1a;整数类型用于表示整数值&#xff0c;如1、-5、100等。 2.特点&#xff1a; Python 3中的…

Ubuntu(通用)—网络加固—ufw+防DNS污染+ARP绑定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 启动开机自启 # sudo ufw reload 更改后的操作2. 防ARP欺骗 华为云教程 arp -d删除dns记录arp -a显示arp表 ipconfi…

拆分盘投资策略解析:机制、案例与风险考量

一、引言 随着互联网技术的迅猛发展和金融市场的不断创新&#xff0c;拆分盘这一投资模式逐渐崭露头角&#xff0c;成为投资者关注的焦点。它基于特定的拆分策略&#xff0c;通过调整投资者持有的份额和单价&#xff0c;实现了看似稳健的资产增长。本文旨在深入探讨拆分盘的运…

MySQL-数据操作类型的角度理解 S锁 X锁

文章目录 1、S锁和S锁互相兼容2、S锁和X锁互斥3、X锁和X锁也互斥4、X锁和S锁也互斥5、select * from account for update;6、select * from account for update nowait;7、select * from account for update skip locked; 1、S锁和S锁互相兼容 2、S锁和X锁互斥 3、X锁和X锁也互…

在线疫苗预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;工作人员管理&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;疫苗管理&#xff0c;论坛管理&#xff0c;公告管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;公告&#xff0c;疫苗…

K 近邻、K-NN 算法图文详解

1. 为什么学习KNN算法 KNN是监督学习分类算法&#xff0c;主要解决现实生活中分类问题。根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 KNN&#xff08;K-Nearest Neihbor&#xff0c;KNN&#xff09;K近邻是机器学习算法中理论最简单&#xff0c;最好理解的算法…

【Android面试八股文】性能优化相关面试题: 什么是内存抖动?什么是内存泄漏?

文章目录 一、什么是内存抖动?内存抖动的问题卡顿OOM(Out Of Memory)二、什么是内存泄漏(Memory Leak)?引用计数法可达性分析法一、什么是内存抖动? 在Java中,每创建一个对象,就会申请一块内存,存储对象信息; 每分配一块内存,程序的可用内存也就少一块; 当程序…

(1)Jupyter Notebook 下载及安装

目录 1. Jupyter Notebook是什么&#xff1f;2. Jupyter Notebook特征3. 应用3. 利用Google Colab安装Jupyter Notebook3.1 什么是 Colab&#xff1f;3.2 访问 Google Colab 1. Jupyter Notebook是什么&#xff1f; 百度百科: Jupyter Notebook&#xff08;此前被称为 IPython …

C语言部分复习笔记

1. 指针和数组 数组指针 和 指针数组 int* p1[10]; // 指针数组int (*p2)[10]; // 数组指针 因为 [] 的优先级比 * 高&#xff0c;p先和 [] 结合说明p是一个数组&#xff0c;p先和*结合说明p是一个指针 括号保证p先和*结合&#xff0c;说明p是一个指针变量&#xff0c;然后指…

R语言 | 使用ggplot绘制柱状图,在柱子中显示数值和显著性

原文链接&#xff1a;使用ggplot绘制柱状图&#xff0c;在柱子中显示数值和显著性 本期教程 获得本期教程示例数据&#xff0c;后台回复关键词&#xff1a;20240628。&#xff08;PS&#xff1a;在社群中&#xff0c;可获得往期和未来教程所有数据和代码&#xff09; 往期教程…

Windows宝塔面板部署ThinkPHP8.0创建Vue项目案例

安装ThinkPHP8.0 登录宝塔面板&#xff0c;创建一个站点。 输入composer代码&#xff0c;执行完成后自动创建TP目录 composer create-project topthink/think tp 网站目录设置为tp&#xff0c;运行目录设置为public 设置PHP版本为8.0以上&#xff0c;不然会出现下面的报错代…

1-5题查询 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例题2.1.可回收且低脂的产品2.2.寻找用户推荐人2.3.大的国家2.4. 文章浏览 I2.5. 无效的推文 1. 相关知识点 sql判断&#xff0c;不包含null&#xff0c;判断不出来distinct是通过查询的结果来去除重复记录ASC升序计算字符长度 CHAR_LENGTH() 或 LENGTH(…

js实现blockly后台解释器,可以单步执行,可以调用c/c++函数

实现原理 解析blockly语法树&#xff0c;使用js管理状态&#xff0c;实际使用lua执行&#xff0c;c/c函数调用使用lua调用c/c函数的能力 可以单行执行 已实现if功能 TODO for循环功能 函数功能 单步执行效果图 直接执行效果图 源代码 //0 暂停 1 单步执行 2 断点 //创建…

[无广告!纯干货]免费用CodeFlying自动化生成一个专属的AI机器人

前言&#xff1a; 真心话&#xff0c;花3分钟看文章&#xff0c;再花5分钟体验&#xff0c;你会回来给我点赞的。 随着AIGC&#xff08;人工智能生成内容&#xff09;行业的迅猛发展&#xff0c;人工智能正在以前所未有的速度和方式改变我们的生活。 它不仅在娱乐、教育、医疗…

[数据集][目标检测]游泳者溺水检测数据集VOC+YOLO格式8275张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;8275 标注数量(xml文件个数)&#xff1a;8275 标注数量(txt文件个数)&#xff1a;8275 标注…