代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

news2024/11/22 15:58:46

代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

  • 1143.最长公共子序列
    • 解法一:动态规划
  • 1035.不相交的线
    • 解法一:动态规划
  • 53. 最大子序和 动态规划
    • 解法一:动态规划
    • 解法二:贪心算法


1143.最长公共子序列

教程视频:https://www.bilibili.com/video/BV1ye4y1L7CQ
在这里插入图片描述
在这里插入图片描述

解法一:动态规划

思路:
1、dp[i][j]含义:表示以text1从0 ~ i-1个字符和text2从0 ~ j-1个字符之间最长公共子序列的长度。
2、递归公式:当前会有两种状况:
a. text1.charAt(i-1)==text2.charAt(j-1),相同则dp[i][j]=dp[i-1][j-1]+1;
b. text1.charAt(i-1)!=text2.charAt(j-1),不相同则比较从哪边获得的长度最大:dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]);
3、dp初始化:dp[i][0]和dp[0][j]没有实际意义,为保证递归,全部初始化为0
4、遍历顺序:外层遍历text1,内层遍历text2
5、打印验证。

class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
        int[][] dp =new int[text1.length()+1][text2.length()+1];
        int maxLength = 0;
        for(int i=1;i<=text1.length();i++){
            for(int j=1;j<=text2.length();j++){
                if(text1.charAt(i-1)==text2.charAt(j-1)){
                    dp[i][j]=dp[i-1][j-1]+1;
                }else{
                    dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]);
                }
                maxLength=Math.max(maxLength,dp[i][j]);
            }
        }
        return maxLength;
    }
}

1035.不相交的线

教程视频:https://www.bilibili.com/video/BV1h84y1x7MP
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解法一:动态规划

思路:(本题同上一题【1143.最长公共子序列】)
1、dp[i][j]含义:表示以nums1从0 ~ i-1和nums2从0 ~ j-1范围之间最长公共子序列的长度。
2、递归公式:当前会有两种状况:
a. nums1[i - 1] 与 nums2[j - 1]相同,相同则dp[i][j]=dp[i-1][j-1]+1;
b. nums1[i - 1] 与 nums2[j - 1]不相同,不相同则比较从哪边获得的长度最大:dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]);
3、dp初始化:dp[i][0]和dp[0][j]没有实际意义,为保证递归,全部初始化为0
4、遍历顺序:外层遍历text1,内层遍历text2

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

53. 最大子序和 动态规划

教程视频:https://www.bilibili.com/video/BV19V4y1F7b5
在这里插入图片描述
在这里插入图片描述

解法一:动态规划

思路:
1、dp[i]含义:以nums[i-1]为结尾的最大连续子数组和。
2、递归公式:dp[i]=nums[i-1]+Math.max(dp[i-1], 0);
3、dp初始化:dp[0]没有实际意义,为保证递归,初始化为0,其余索引值都会在递归时被覆盖无需考虑。由于数组和可能是负数,需要将maxSum初始化为Integer.MIN_VALUE
4、遍历顺序:正向遍历
5、打印验证。

class Solution {
    public int maxSubArray(int[] nums) {
        int[] dp =new int[nums.length+1];
        int maxSum=Integer.MIN_VALUE;
        for(int i=1;i<=nums.length;i++){
            dp[i]=nums[i-1]+Math.max(dp[i-1],0);
            maxSum=Math.max(maxSum,dp[i]);
        }
        return maxSum;
    }
}

解法二:贪心算法

53. 最大子序和


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

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

相关文章

Python学习38:凯撒密码——解密

类型&#xff1a;字符串‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 描述‪‬‪…

【Netty】Netty 编码器(十三)

文章目录 前言一、MessageToByteEncoder 抽象类二、MessageToMessageEncoder 抽象类总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&#xff09;Netty 架构设计&#xff08;二&#xff09;Netty Channel 概述&#xff08;三&#xff09;Netty ChannelHan…

notepad++查询指定内容并复制

背景说明 记录一下使用notepad进行文本内容查找以及替换的相关场景,简单记录方便后期查看,场景内容: 1.从指定的给出内容中筛选出所有的人员id集合 2.将每一行后面添加逗号 1.从指定的给出内容中筛选出所有的人员id集合 要求从指定的给出内容中筛选出所有的人员id集…

便携式明渠流量计的使用特点

便携式明渠流量计使用特点&#xff1a; 便携式明渠流量计使用特点&#xff0c;首先了解相关要求&#xff1a; 随着新标准JJG711-1990《明渠堰槽流量计试行检定规程》、HJ/T15-2019《超声波明渠污水流量计技术要求及检测方法》、HJ 354-2019《水污染源在线监测系统(CODCr、NH3-N…

Java开发 - 你不知道的JVM优化详解

前言 代码上的优化达到一定程度&#xff0c;再想提高系统的性能就很难了&#xff0c;这时候&#xff0c;优秀的程序猿往往会从JVM入手来进行系统的优化。但话说回来&#xff0c;JVM方面的优化也是比较危险的&#xff0c;如果单单从测试服务器来优化JVM是没有太大的意义的&…

制作PE工具盘

文章目录 前言一、什么是PE工具箱&#xff1f;二、制作WinPE工具箱例&#xff1a;制作ISO模式的PE工具箱 三、PE工具箱的典型应用1.清除Windows登陆密码2.调整分区大小3.系统备份4.系统恢复例&#xff1a;系统备份与恢复 四、使用U深度制作的PE工具恢复误删除的文件实验步骤注意…

springboot+vue车辆充电桩管理系统(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的车辆充电桩管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;…

Vim的使用

1.什么是Vim Vim是Linux下的一款代码编辑器&#xff0c;vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅…

Javascript中常用方法

1.操作元素的类&#xff1a; 元素.classList.add(类名) 元素.classList.remove(类名) 元素.classList.toggle(类名) //切换类名 2.操作表单元素属性&#xff1a; 表单.value用户名 表单.typepassworddisabled checked selected 3.自定义属性&#xff1a; 定义&#xff1a…

小程序极速注册认证免300认证费 突破管理员身份只能绑定5个小程序绿色通道

小程序注册账号管理相信大家有时候头都很大&#xff0c;一个身份证号只能绑定5个小程序主管理员。超个5个小程序就得请朋友、请亲戚身份证绑定管理员。有时还得看对方不方便&#xff0c;改个类目改个LOGO都还得管理员扫码。为了满足会员需求同是也满足自己需要&#xff0c;特别…

C语言初阶 牛客网刷题笔记(将持续更新..)

BC7 缩短二进制 printf 格式控制符 “%o” —— 八进制整数 、“%x” —— 十六进制整数 &#xff1b; 修饰符 “#” —— 控制前导显示 BC64 K形图案 错因&#xff1a;把图形分成两部分&#xff0c;下半部分打印错误 先把下半部分作为一个完整三角形&#xff1a; int n0;scan…

2023新版Spring6全新讲解-核心内容之AOP

Spring核心之AOP 一、前置基础-代理模式 在学习Spring的AOP之前我们需要补充下设计模式中的代理模式。这块是理解AOP的必备基础内容。 1. 静态代理 若代理类在程序运行前就已经存在&#xff0c;那么这种代理方式被成为 静态代理 &#xff0c;这种情况下的代理类通常都是我们在J…

ESG成全球风潮,联想造了一个可持续的“进托邦”

不得不承认&#xff0c;全球经济前景仍然存在较大的不确定和挑战。全球经济疲软、地缘政治逆风、行业竞争加剧等多重压力让很多人都感受到了寒意。 在可预见的未来&#xff0c;我们将继续在一个复杂多变的全球环境中运营。 因此&#xff0c;著名的科技思想家凯文凯利提出&#…

PCB的层间结构、铜箔厚度选择、PCB纵横比和板厚的要求

PCB的层间结构 a) 原则上应该采用对称结构设计。对称的含义包括&#xff1a;介质层厚度及种类、铜箔厚度、图形分布类型&#xff08;大铜箔层、线路层&#xff09;的对称。 b) 考虑电压击穿问题&#xff0c;正常情况下推荐介质层厚度设计值为≥0.1mm。 铜箔厚度选择 选择铜箔…

javascript基础六:说说你对闭包的理解?闭包使用场景?

一、是什么 一个函数和对其周围状态&#xff08;lexical environment&#xff0c;词法环境&#xff09;的引用捆绑在一起&#xff08;或者说函数被引用包围&#xff09;&#xff0c;这样的组合就是闭包&#xff08;closure&#xff09; 也就是说&#xff0c;闭包让你可以在一个…

机器学习-Kmeans

K-means是一种经典的无监督学习算法&#xff0c;用于对数据进行聚类。K-means算法将数据集视为具有n个特征的n维空间&#xff0c;并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文将介绍K-means算法的原理、实现和应用。 定义 K-means是一种无监督学习算法&#…

MongoDB基础到入门(一篇就够了)

文章目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨前言MongoDBMongoDB体系结构MongoDB数据模型MongoDB部署安装服务器启动服务器 Shell连接(mongo命令)MongoDB可视化工具MongoDB命令基本常用⭐权限数据库⭐辅助命令⭐集合⭐…

vite的使用

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

抖音seo源代码分享(前端+后端)

后端代码展示&#xff1a; $where [ [name > dvtv_s_id, oper > , value > $this->sid], [name > dvtv_dv_id, oper > , value > $dv_id], ]; $cache_model new App_Model_Douyin_MysqlVideoTempVideoStora…

挂耳式耳机推荐,这几个蓝牙耳机品牌不容错过!

办公的同时享受音乐是释放工作压力的不错途径&#xff0c;对于成为打工人日常配饰的耳机随着无线技术的不断进步也在不断开发新产品。开放式耳机不入耳佩戴有效的降低对耳朵的负担&#xff0c;在不打扰旁人的同时&#xff0c;长时间的佩戴也是对耳朵的考验&#xff0c;不知该如…