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

300.最长递增子序列

完成

思路:

本题dp[i]代表[0,i]数组的最长递增子序列,一开始的想法也是两层for循环,但总觉得这题不该这么烦。然后看了随想录的题解,也是两层for循环,所以有了想法就要去尝试。

本题初始化也是个坑,应该把dp数组初始化为1,从语义上也很好理解,因为无论数组元素如何排列,最长递增子序列至少是1。另外如果初始化为0,递推公式 dp[i] = Math.max(dp[i], dp[j]+1) 在取 dp[j]+1 时如果 dp[j] == 0,结果也不对。

代码

class Solution {// dp[i] 表示[0,i]数组的最长递增子序列public int lengthOfLIS(int[] nums) {int[] dp = new int[nums.length];Arrays.fill(dp, 1);int res = 1;for (int i = 1; i < nums.length; i++) {  //遍历元素for (int j = 0; j < i; j++) { // 计算dp[i]if(nums[i]>nums[j]){// 和前面所有元素比较,需要保留dp[i]本身的值,取最大dp[i] = Math.max(dp[i], dp[j]+1);}// 取所有dp[i]的最大值res = Math.max(res, dp[i]);}}return res;}
}

674. 最长连续递增序列

完成

代码

贪心

class Solution {public int findLengthOfLCIS(int[] nums) {int res = 1;int temp = 1;for (int i = 1; i < nums.length; i++) {if(nums[i]>nums[i-1]){temp++;}else{temp=1;}res = Math.max(res, temp);}return res;}
}

动态规划

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

718. 最长重复子数组

完成

思路:

涉及到两个数组比较状态的保存,一维dp就不够用了,需要用到二维dp数组。

代码

dp[i][j] 代表 [0-i]的nums1数组和[0-j]的nums2数组的公共最长子数组的长度。

class Solution {// dp[i][j] 代表 [0-i]的nums1数组和[0-j]的nums2数组的公共最长子数组的长度public int findLength(int[] nums1, int[] nums2) {int[][] dp = new int[nums1.length+1][nums2.length+1];int res = 0;for (int i = 0; i < nums1.length; i++) if (nums1[i] == nums2[0]) dp[i][0] = 1;for (int j = 0; j < nums2.length; j++) if (nums1[0] == nums2[j]) dp[0][j] = 1;for (int i = 0; i < nums1.length; i++) {for (int j = 0; j < nums2.length; j++) {if(nums1[i]==nums2[j] && i>0 && j>0){dp[i][j] = dp[i-1][j-1]+1;}res = Math.max(res, dp[i][j]);}}return res;}
}

dp[i][j] 代表以i-1结尾的nums1数组和以j-1结尾的nums2数组的公共最长子数组的长度。

class Solution {public int findLength(int[] nums1, int[] nums2) {int result = 0;int[][] dp = new int[nums1.length + 1][nums2.length + 1];for (int i = 1; i < nums1.length + 1; i++) {for (int j = 1; j < nums2.length + 1; j++) {if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;result = Math.max(result, dp[i][j]);}}}return result;}
}

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

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

相关文章

react中tab选项卡切换

react中tab选项卡切换&#xff0c;直接上代码&#xff0c;简单易懂 jsx代码 /* eslint-disable react-hooks/exhaustive-deps */ import React, { useEffect, useState } from "react"; import DocumentTitle from react-document-title import styles from ./…

《More Effective C++》- 极精简版 21-30条

本文章属于专栏《业界Cpp进阶建议整理》 继续上一篇《More Effective C》- 极精简版 11-20条。本章我会继续讲解我对21-30条的极精简的理解。 21、利用重载技术避免隐式转换 const A operator(const A& a1, const A& a2) &#xff0c;且有构造函数 A(int){}那 A a3 2…

ctf_show笔记篇(web入门---文件上传)

文件上传 151&#xff1a;简单的前端验证&#xff0c;有多种绕过方法 152&#xff1a;简单后端验证&#xff0c;不知道过滤了那些后缀&#xff0c;我尝试以后都可以上传 153&#xff1a;利用.user.ini文件&#xff0c;虽然能上传.pht这一类文件但访问时只会下载下来 这里就…

列表吸顶分组之按首字母分组国家选区号

列表粘性分组之按首字母分组国家选区号 Android原生版本 直接先看UI图,效果如下 本来看起来也不难,我就想着上面常用区号那块不动,下面的列表滑动就行,但IOS说他滑动的时候上面也滑上去了,好吧,这也行;但最终效果做出来后,IOS滑动后会有按照国家名称首字母进行粘性分…

低代码:数智化助力新农业发展

随着科技的飞速发展和数字化转型的深入推进&#xff0c;低代码开发平台正逐渐成为软件开发的热门话题。尤其在农业领域&#xff0c;低代码技术为传统农业注入了新的活力&#xff0c;助力新农业实现高效、智能的发展。 低代码开发平台的概念与特点 随着科技的飞速发展&#xff0…

穿越数字防线:SSH协议的全景解析与未来展望

SSH基本概念 SSH&#xff08;Secure Shell&#xff09;是一个用于计算机网络的加密协议&#xff0c;设计用来提供一种安全的方式通过不安全的网络进行远程登录和其他网络服务。SSH协议主要用于远程管理系统和安全地传输信息。 SSH的历史背景 SSH由Tatu Ylnen于1995年开发&am…

IT廉连看——Uniapp——应用生命周期

IT廉连看——Uniapp——应用生命周期 [IT廉连看] 目标&#xff1a; 了解APP.vue这个页面 了解所有的应用生命周期 熟练编写常用的应用生命周期 1、App.vue&#xff1a; 在UniApp中&#xff0c;App.vue是应用的根组件。它类似于其他前端框架中的根组件&#xff0c;如Vue…

@Component和@Bean的区别

Component、Bean都是使用注解的形式来定义bean&#xff0c;从功能上讲是一样的 Component&#xff08;包括&#xff20;Service、Repository&#xff09;用于自动检测和使用类路径扫描注解&#xff0c;自动装配 bean。注解类和bean 之间是存在隐性的映射关系的&#xff0c;一个…

基于springboot的精品在线试题库系统设计与实现(程序+数据库+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 目录 一、研…

广东工行客户在手机银行上进行医保查询

现在的手机银行功能越来越多&#xff0c;对于一些不常用的功能&#xff0c;更是不知道该在哪里找到及访问&#xff0c;像医保查询&#xff0c;我原来就不知道怎么访问&#xff0c;问了别人才知道&#xff0c;特记录一下&#xff0c;以方便下次要访问时能找到。 1、从 手机银行…

考勤签到作业表单周期打卡评分小程序开发

表单考勤签到作业周期打卡评分小程序开源版开发 这是一款功能丰富的自定义表单统计小程序&#xff0c;涵盖信息填表、预约报名、签到打卡、活动通知、报名投票以及班级统计等多项功能。 高度灵活与自定义 该小程序为用户提供高度灵活的自定义表单系统。正文描述字段包含文本…

JSP语言基础(案例代码)

JSP基本语法 编写一个JSP页面&#xff0c;在该页面中显示当前时间 <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" import"java.util.*"%> <% page import"java.text.SimpleDateF…

独孤思维:打着永久免费更新的幌子,诱惑你付费

01 说一个副业圈讳莫如深的真相。 很多人贪便宜&#xff0c;外面收费几百上千的工具&#xff0c;结果有的地方只卖几十块。 当然不是同一个工具&#xff0c;背后做了阉割和限制。 所以才便宜。 更有甚者&#xff0c;打着永久免费更新的幌子&#xff0c;诱惑你付费。 然后…

马蹄集 开学季活动赛

目录 最大的平均值 门票 二阶前缀和 最大异或和 背军理 信号灯 切蛋糕 矩形 矩阵01变 运动会进行中 三连 距离平方和 最大的平均值 黄金时间限制:1秒巴 占用内存:128 M少难度: 给一个数组&#xff0c;长度为n&#xff0c;找一个长度大于等于m的子区间&#xff0c;使…

部署DNS 实战篇

二、DNS 部署 环境介绍 服务器3台、系统centos 安装软件 yum install -y bind bind-utils bind-chrootbind 主包bind-utils 客户端测试工具&#xff08;host 、dig 、nslookup&#xff09;bind-chroot chroot环境 禁锢dns服务器的工作目录caching-nameserver(rhel5提供…

【Redis】redis的基本使用

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Redis ⛺️稳中求进&#xff0c;晒太阳 Redis的概述 为什么要有redis? redis是数据库&#xff0c;mysql也是数据库&#xff0c;redis做缓存的意义就是为了减轻数据库压力 数据库为什么…

微信公众号公司主体变更怎么办?

公众号迁移的好处有哪些&#xff1f;迁移后原公众号还能用吗&#xff1f;1&#xff09;获得更多权限功能如果公众号是个人主体&#xff0c;想进行认证&#xff0c;拥有更多权限功能。例如菜单栏跳转外部链接&#xff0c;相拥有留言功能&#xff0c;服务号认证获得开发权限等。就…

平台总线式驱动开发

一、总线、设备、驱动 硬编码式的驱动开发带来的问题&#xff1a; 垃圾代码太多 结构不清晰 一些统一设备功能难以支持 开发效率低下 1.1 初期解决思路&#xff1a;设备和驱动分离 struct device来表示一个具体设备&#xff0c;主要提供具体设备相关的资源&#xff08;如…

openEuler系统远程SSH远程连接

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 欧拉操作系统(openEuler, 简称“欧拉”)是面向数字基础设施的操作系统,支持服务器、云计算、边缘openEuler是面向数字基础设施的操作系…

基于51单片机的心率体温检测系统设计

目 录 摘 要 I Abstract II 引 言 1 1 控制系统设计 2 1.1 主控系统方案设计 2 1.2 脉搏传感器方案设计 3 1.3 系统工作原理 5 2 硬件设计 6 2.1 主电路 6 2.1.1 单片机的选择 6 2.1.2 STC89C51的主要功能及性能参数 6 2.1.3 STC89C51单片机引脚说明 6 2.2 驱动电路 8 2.2.1 比…