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

300.最长递增子序列

在这里插入图片描述

题目链接:300.最长递增子序列
文档讲解:代码随想录
状态:不会,递推状态的时候只想着如何从dp[i-1]推导dp[i],没想过可能需要枚举dp[0-i]

思路:
找出所有比自己小的数字的dp[j],在这些dp[j]中找到最大的,然后加1。
也就是 j 从[0,i) 中 if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);

题解:

public int lengthOfLIS(int[] nums) {// 如果数组长度为1,最长递增子序列即为数组的第一个元素if (nums.length == 1) {return nums[0];}// 创建dp数组,dp[i]表示以nums[i]结尾的最长递增子序列的长度int[] dp = new int[nums.length];// 初始化dp数组,每个位置的初始值为1,因为每个元素本身就是一个递增子序列Arrays.fill(dp, 1);// 记录最长递增子序列的长度int max = 0;// 从第1个元素开始遍历for (int i = 1; i < nums.length; i++) {// 在第i个元素之前的元素中寻找for (int j = 0; j < i; j++) {// 如果找到一个比nums[i]小的元素nums[j]if (nums[j] < nums[i]) {// 更新dp[i],表示以nums[i]结尾的最长递增子序列的长度dp[i] = Math.max(dp[j] + 1, dp[i]);}}// 更新全局最大值max = Math.max(max, dp[i]);}// 返回最长递增子序列的长度return max;
}

674. 最长连续递增序列

在这里插入图片描述

题目链接:674. 最长连续递增序列
文档讲解:代码随想录
状态:终于有个简单题了。。。

思路:

因为连续,所以不需要向上题一样比较nums[j]与nums[i]了,只要比较nums[i] 和 nums[i - 1],如果是大于则dp[i] = dp[i - 1] + 1;

题解:

    public int findLengthOfLCIS(int[] nums) {if (nums.length == 1) {return 1;}int[] dp = new int[nums.length];Arrays.fill(dp, 1);int max = 1;for (int i = 1; i < nums.length; i++) {if (nums[i] > nums[i - 1]) {dp[i] = dp[i - 1] + 1;max = Math.max(dp[i], max);}}return max;}

718. 最长重复子数组

题目链接:718. 最长重复子数组
文档讲解:代码随想录
状态:不会

思路:
dp[i][j] 表示以 nums1[i-1] 结尾的子数组A和以 nums2[j-1] 结尾的子数组B之间的最长重复子数组的长度。
为了得到 dp[i][j],必须在 dp[i-1][j-1] 的基础上加1,否则就不是重复子数组。
因此,当 nums1[i-1] 等于 nums2[j-1] 时,dp[i][j] = dp[i-1][j-1] + 1。

题解:

	public int findLength(int[] nums1, int[] nums2) {// 创建二维数组 dp,大小为 (nums1.length + 1) x (nums2.length + 1)int[][] dp = new int[nums1.length + 1][nums2.length + 1];int res = 0; // 存储最大公共子数组的长度// 遍历 nums1 和 nums2 的每一个元素for (int i = 1; i <= nums1.length; i++) {for (int j = 1; j <= nums2.length; j++) {// 如果 nums1[i-1] 和 nums2[j-1] 相等if (nums1[i - 1] == nums2[j - 1]) {// 则 dp[i][j] 等于 dp[i-1][j-1] + 1dp[i][j] = dp[i - 1][j - 1] + 1;}// 更新最大公共子数组的长度res = Math.max(res, dp[i][j]);}}return res; // 返回最大公共子数组的长度}public int findLength2(int[] nums1, int[] nums2) {// 创建一维数组 dp,大小为 nums2.length + 1int[] dp = new int[nums2.length + 1];int result = 0; // 存储最大公共子数组的长度// 遍历 nums1 的每一个元素for (int i = 1; i <= nums1.length; i++) {// 从后往前遍历 nums2 的每一个元素for (int j = nums2.length; j > 0; j--) {// 如果 nums1[i-1] 和 nums2[j-1] 相等if (nums1[i - 1] == nums2[j - 1]) {// 则 dp[j] 等于 dp[j-1] + 1dp[j] = dp[j - 1] + 1;} else {// 否则 dp[j] 重置为 0dp[j] = 0;}// 更新最大公共子数组的长度result = Math.max(result, dp[j]);}}return result; // 返回最大公共子数组的长度}

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

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

相关文章

【K8s】【问题排查】k8s只能本地服务器访问服务,其他节点无法访问服务

出现原因&#xff1a; 问题描述&#xff1a;k8s部署服务之后&#xff0c;只能在Pod所在的节点通过node ip 对外暴露的端口请求&#xff1b;无法使用CLUSTER-IP端口访问。也不能在其他Node节点通过Pod所在的节点通过node ip 对外暴露的端口请求&#xff1b; 主机名与IP对应情况&…

随着人工智能与机器学习的广泛应用,Java 如何有效地与深度学习框架进行集成,以实现更智能的应用开发?

Java作为一种广泛使用的编程语言&#xff0c;在人工智能和机器学习领域也有着一定的应用。Java可以通过与深度学习框架的集成来实现更智能的应用开发&#xff0c;以下是一些方法&#xff1a; 使用Java的深度学习框架&#xff1a;Java有一些针对深度学习的框架&#xff0c;如DL4…

SpringBoot 实现视频分段播放(通过进度条来加载视频)

需求&#xff1a;现在我本地电脑中有一个文件夹&#xff0c;文件夹中都是视频&#xff0c;需要实现视频播放的功能。 问题&#xff1a;如果通过类似 SpringBoot static 文件夹的方式来实现&#xff0c;客户端要下载好完整的视频之后才可以播放&#xff0c;并且服务端也会占用大…

秋招突击——7/5——设计模式知识点补充——适配器模式、代理模式和装饰器模式

文章目录 引言正文适配器模式学习篮球翻译适配器 面试题 代理模式学习面试题 装饰器模式学习装饰模式总结 面试题 总结 引言 为了一雪前耻&#xff0c;之前腾讯面试的极其差&#xff0c;设计模式一点都不会&#xff0c;这里找了一点设计模式的面试题&#xff0c;就针对几个常考…

计算机图形学入门24:材质与外观

1.前言 想要得到一个漂亮准确的场景渲染效果&#xff0c;不只需要物理正确的全局照明算法&#xff0c;也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思&#xff0c;不同的材质在光照下就会表现出不同的外观&#xff0c;所以外观…

代理模式的实现

1. 引言 1.1 背景 代理模式&#xff08;Proxy Pattern&#xff09;是一种常用的设计模式&#xff0c;它允许通过一个代理对象来控制对另一个对象的访问。在面向对象编程的框架中&#xff0c;代理模式被广泛应用&#xff0c;尤其在Spring框架的AOP&#xff08;面向切面编程&am…

C++中的设计模式

要搞清楚设计模式&#xff0c;首先得要了解UML中的类的一些关系模型。 一.UML图中与类的层次关系 UML关系&#xff1a;继承关系&#xff08;泛化关系&#xff09;&#xff1b;组合关系&#xff1b;聚合关系&#xff1b;关联关系&#xff1b;依赖关系&#xff1b; 以上关系强度…

vue中实现button按钮的重复点击指令

// 注册一个全局自定义指令 v-debounce Vue.directive(debounce, {// 当被绑定的元素插入到 DOM 中时...inserted: function (el, binding) {let timer;el.addEventListener(click, () > {clearTimeout(timer);timer setTimeout(() > {binding.value(); // 调用传给指令…

IO、零拷贝、多路复用、connection、池化

目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO &#xff1a;同步阻塞io&#xff0c;单线程 内存上下…

Springboot学习之用EasyExcel4导入导出数据(基于MyBatisPlus)

一、POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…

AI Earth应用—— 在线使用sentinel数据VV和VH波段进行水体提取分析(昆明抚仙湖、滇池为例)

AI Earth 本文的主要目的就是对水体进行提取,这里,具体的操作步骤很简单基本上是通过,首页的数据检索,选择需要研究的区域,然后选择工具箱种的水体提取分析即可,剩下的就交给阿里云去处理,结果如下: 这是我所选取的一景影像: 详情 卫星: Sentinel-1 级别: 1 …

A35 STM32_HAL库函数 之PCD通用驱动 -- A -- 所有函数的介绍及使用

A35 STM32_HAL库函数 之PCD通用驱动 -- A -- 所有函数的介绍及使用 1 该驱动函数预览1.1 HAL_PCD_Init1.2 HAL_PCD_DeInit1.3 HAL_PCD_MspInit1.4 HAL_PCD_MspDeInit1.5 HAL_PCD_Start1.6 HAL_PCD_Stop1.7 HAL_PCD_IRQHandler1.8 HAL_PCD_DataOutStageCallback1.9 HAL_PCD_Data…

基于机器学习(支持向量机,孤立森林,鲁棒协方差与层次聚类)的机械振动信号异常检测算法(MATLAB 2021B)

机械设备异常检测方法流程一般如下所示。 首先利用传感器采集机械运行过程中的状态信息&#xff0c;包括&#xff0c;振动、声音、压力、温度等。然后采用合适的信号处理技术对采集到机械信号进行分析处理&#xff0c;提取能够准确反映机械运行状态的特征。最后采用合理的异常决…

C++ 什么是虚函数?什么是纯虚函数,以及区别?(通俗易懂)

&#x1f4da; 当谈到虚函数时&#xff0c;通常是指在面向对象编程中的一种机制&#xff0c;它允许在派生类中重写基类的函数&#xff0c;并且能够通过基类指针或引用调用派生类中的函数。 目录 前言 &#x1f525; 虚函数 &#x1f525; 纯虚函数 &#x1f525; 两者区别…

洛谷 P1032 [NOIP2002 提高组] 字串变换

P1032 [NOIP2002 提高组] 字串变换 - 洛谷 | 计算机科学教育新生态 题目来源 洛谷 题目内容 [NOIP2002 提高组] 字串变换 题目背景 本题不保证存在靠谱的多项式复杂度的做法。测试数据非常的水&#xff0c;各种做法都可以通过&#xff0c;不代表算法正确。因此本题题目和…

mac|idea导入通义灵码插件

官方教程&#xff1a;通义灵码下载安装指南_智能编码助手_AI编程_云效(Apsara Devops)-阿里云帮助中心 下载插件&#xff1a; ⇩ TONGYI Lingma - JetBrains 结果如下&#xff1a; 选择apply、ok&#xff0c;会出现弹窗&#xff0c;点击登录 可以实现&#xff1a;生成单元测…

《C++20设计模式》代理模式

文章目录 一、前言二、实现1、UML类图2、实现 一、前言 这代理模式和装饰器模式很像啊。都是套一层类。&#x1f630; 主要就是功能差别 装饰器&#xff1a; 为了强化原有类的功能。代理模式&#xff1a; 不改变原有功能&#xff0c;只是强化原有类的潜在行为。 我觉的书上有…

【基于R语言群体遗传学】-8-代际及时间推移对于变异的影响

上一篇博客&#xff0c;我们学习了在非选择下&#xff0c;以二项分布模拟遗传漂变的过程&#xff1a;【基于R语言群体遗传学】-7-遗传变异&#xff08;genetic variation&#xff09;-CSDN博客 那么我们之前有在代际之间去模拟&#xff0c;那么我们就想知道&#xff0c;遗传变…

KVM虚机调整磁盘大小(注:需重启虚拟机)

1、将磁盘大小由15G调整为25G [rootkvm ~]# virsh domblklist kvm-client #显示虚拟机硬盘列表 [rootkvm ~]# qemu-img resize /var/lib/libvirt/images/tesk-disk.qcow2 10G #扩容 [rootkvm ~]# qemu-img info /var/lib/libvirt/images/test-disk.qcow2 #查看信息 注&…

奥威BI方案:多行业、多场景,只打高端局

奥威BI方案&#xff0c;确实以其卓越的性能和广泛的应用领域&#xff0c;在高端数据分析市场中占据了一席之地。以下是对奥威BI方案的详细解析。 奥威BI方案是一款针对多行业、多场景的全面数据分析解决方案&#xff0c;它结合了大数据、云计算等先进技术&#xff0c;为企业提…