代码随想录刷题第53天|Leetcode1143最长公共子序列

news2024/11/25 15:40:12

1、Leetcode1143最长公共子序列

题目链接:1143最长公共子序列

本题不要求连续,求最长公共子序列。

1、确定dp数组及下标的含义

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。

2、确定递推公式

text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = dp[i - 1][j - 1] + 1;

text1[i - 1] 与 text2[j - 1]不相同,dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

3、初始化

dp[i][0] = 0; dp[0][j] = 0; 统一初始化为0;

4、遍历顺序

从前向后,从上到下。

5、举例推导dp数组

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        vector<vector<int>> dp(text1.size()+1, vector<int>(text2.size()+1, 0));
        for (int i = 1; i <= text1.size(); i++)
        {
            for (int j = 1; j <= text2.size(); j++)
            {
                if (text1[i - 1] == text2[j - 1])
                {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else
                {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }
        }

        return dp[text1.size()][text2.size()];
    }
};

2、Leetcode1035不想交的钱

1035不想交的钱

与上题思路完全一致。

最大连线数,其实就是求两个字符串的最长公共子序列的长度!

class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        vector<vector<int>> dp(nums1.size() + 1 , vector<int>(nums2.size() + 1, 0));
        for (int i = 1; i <= nums1.size(); i++)
        {
            for ( int j = 1; j <= nums2.size(); j++)
            {
                if (nums1[i-1] == nums2[j-1])
                {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                }
                else
                {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }
            }
        }

        return dp[nums1.size()][nums2.size()];
    }
};

3、LeetCode53最大子数组和

题目链接:53、最大子数组和

1、确定dp数组及下标含义

dp[i]:包括下标i(以nums[i]为结尾)的最大连续子序列和为dp[i]。

2、确定递推公式

dp[i]只有两个方向可以推出来:

dp[i - 1] + nums[i],即:nums[i]加入当前连续子序列和

nums[i],即:从头开始计算当前连续子序列和

dp[i] = max(dp[i - 1] + nums[i], nums[i]);

3、初始化

dp[0] = nums[0];

4、遍历顺序:

从前向后。

5、举例推导。

注意最后的结果可不是dp[nums.size() - 1]!而是最大值。

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        if (nums.size() == 0) return 0;
        vector<int> dp(nums.size(), 0);
        dp[0] = nums[0];
        int result = nums[0];
        for (int i = 1; i < nums.size(); i++)
        {
            dp[i] = max(dp[i - 1] + nums[i], nums[i]);
            if (dp[i] > result) result = dp[i];
        }

        return result;
    }
};

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

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

相关文章

volatile原理剖析和实例讲解

一、是什么 volatile是Java的一个关键字&#xff0c;是Java提供的一种轻量级的同步机制&#xff0c; 二、能做什么 保证了不同线程对这个变量进行操作时的可见性&#xff0c;有序性。 三、可见性 可见性主要是指一个线程修改了共享变量的值&#xff0c;另一个线程可以看见…

PreparedStatement 相比于 Statement的优点

PreparedStatement 相比于 Statement&#xff0c;有以下几个优点&#xff1a; 1. 预编译&#xff1a;PreparedStatement 对象在执行 SQL 语句之前会进行预编译&#xff0c;这意味着数据库管理系统可以提前解析和编译 SQL 语句&#xff0c;以优化执行计划&#xff0c;从而提高查…

【C语言初阶(15)】操作符1

文章目录 Ⅰ操作符的分类Ⅱ 算术操作符Ⅲ 移位操作符⒈左移操作符⒉右移操作符 Ⅳ 位操作符⒈按位取⒉按位与⒊按位异或⒋按位或⒌位操作符练习题 Ⅴ赋值操作符Ⅵ 单目操作符 Ⅰ操作符的分类 算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符…

【ElasticSearch】ES集群搭建、监控、故障转移

文章目录 1、ES集群介绍2、搭建ES集群3、集群状态监控4、集群职责及脑裂5、分布式新增和查询流程6、ES故障转移 1、ES集群介绍 单机的ES做数据存储与搜索&#xff0c;必然面临两个问题&#xff1a; 海量数据存储问题单点故障问题 因此&#xff0c;考虑使用ES集群&#xff1a…

AIGC浪潮席卷,亚马逊云科技携手海尔设计、Nolibox加速工业设计转型

从机器学习算法到深度学习再到强化学习&#xff0c;AI创新浪潮奔流不息。而AIGC&#xff08;AI-generated Content&#xff0c;人工智能生成内容&#xff09;的到来&#xff0c;更是让AI成为众多企业的得力助手&#xff0c;开拓了文本、图像、音视频等领域的天花板。 在洞悉到…

x86架构ubuntu18下运行mgba模拟器

0. 环境 i7 ubuntu18 1. 准备源码 到https://github.com/mgba-emu/mgba/releases下载源码 mgba-0.10.2.tar.gz tar -zvxf mgba-0.10.2.tar.gz cd mgba0.10.2 2. 编译 mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX/home/xxjianvm/work/mgba-0.10.2/install .. make -j…

PROFINET转TCP/IP网关TCP/IP协议的含义是

大家好&#xff0c;今天要和大家分享一款自主研发的通讯网关&#xff0c;远创智控YC-PN-TCPIP。这款网关可是集多种功能于一身&#xff0c;PROFINET从站功能&#xff0c;让它在通讯领域独领风骚。想知道这款网关如何实现PROFINET和TCP/IP网络的连接吗&#xff1f;一起来看看吧&…

【GeoDa实用技巧100例】004:绘制长沙市宾馆热度图

文章目录 一、加载宾馆分布数据二、绘制热度图三、加载范围数据四、加载底图数据 一、加载宾馆分布数据 加载专栏配套的案例数据data004.rar中的长沙市宾馆酒店.shp&#xff0c;如下图&#xff0c;选择Shapefile格式&#xff1a; 选择长沙市宾馆酒店&#xff0c;加载如下&…

完全平方数(力扣)动态规划 JAVA

给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 不是。 示…

【指针进阶】(题目练习)

这篇文章的思维导图在这里&#xff1a;思维导图 一维数组&#xff1a; int a[] {1,2,3,4}; printf("%d\n",sizeof(a)); printf("%d\n",sizeof(a0)); printf("%d\n",sizeof(*a)); printf("%d\n",sizeof(a1)); printf("%d\n"…

Vit 实战营 Class2:图像与Transformer基础

文章目录 数组图像&#xff1a;图像与像素图像分类&#xff1a;机器如何学习&#xff1f;NMT&#xff1a;Neuron Machine TranslationTransformerVision Transformer代码实战 数组图像&#xff1a;图像与像素 什么是数字图像&#xff1f;在计算机图像的图像格式。每一个点叫pix…

全国节能宣传周丨物通博联智慧能源解决方案助力节能降碳

今年7月10日至16日&#xff0c;为全国第33个节能宣传周。今年全国节能宣传周活动主题是“节能降碳&#xff0c;你我同行”。 全国节能宣传周活动是在1990年国务院第六次节能办公会议上确定的活动周&#xff0c;开展该活动是实施全面节约战略、开展节能降碳宣传教育、推动形成绿…

ros系统生成kinova双臂机器人moveit配置包方法,详细过程,亲测有效!

环境&#xff1a;ubuntu18.04 ros&#xff1a;melodic 此博客前提你已经安装了moveit&#xff0c;如果未安装&#xff0c;可参考链接 一、启动MoveIt Setup Assistant roslaunch moveit_setup_assistant setup_assistant.launch点击&#xff1a;Create New MoveIt Configurat…

听产品大佬谈大语言模型的商业化价值

今年 3 月以来&#xff0c;全球各大厂商陆续发布大语言模型&#xff0c;无数人欢欣鼓舞&#xff0c;庆祝沉寂了几年的 AI 领域重新焕发生机。 然而热闹过后&#xff0c;一个现实的问题摆在面前&#xff1a;大语言模型的商业化价值该如何挖掘&#xff1f; 来自美洽的资深产品经…

CVE-2021-41773

CVE-2021-41773 Apache Httpd Server 路径穿越漏洞 Httpd&#xff08;即 HTTP Daemon &#xff0c;超文本传输协议守护程序的简称&#xff09;是一款运行于网页服务器后台&#xff0c;等待传入服务器请求的软件。HTTP 守护程序能自动回应服务器请求&#xff0c;并使用 HTTP 协…

fastadmin调试前端js

当键盘按键抬起后打印id #username&#xff0c;点击箭头的除缓存 隐藏前端昵称 设置为 style"sidplay:none" 添加管理员组别的时候把此处的 NULL改为 1 就可以默认选择第一组别

springboot生鲜交易系统

生鲜交易管理方面的任务繁琐,以至于交易市场每年都在生鲜交易管理这方面投入较多的精力却效果甚微,生鲜交易系统的目标就是为了能够缓解生鲜交易管理工作方面面临的压力,让生鲜交易管理方面的工作变得更加高效准确。 本项目在开发和设计过程中涉及到原理和技术有: B/S、java技…

css 绘制直角梯形 和 平行四边形

<div:class"{isFirst: index 0,tab_item: index ! 0,}":style"{width: item?.label?.length > 4 ? 206px : 137px,}"><div>{{ item.label }}</div></div> isFirst是直角梯形 tab_item是平行四边形 直角梯形 .isFirstcur…

计算机系统结构与操作系统实验三(5)-中断

&#x1f4cd;实验要求 将中断处理程序放到C里编写 &#x1f4cd;实验过程 鉴于代码相比之前&#xff0c;多出了很多配套的固定代码&#xff0c;因此代码量和代码中来突增&#xff0c;本文就不再一个一个贴代码了&#xff0c;需要的直接去看我上传在csdn的代码吧(文末有链接…

音视频绕不开的话题之WebRTC

什么是WebRTC&#xff1f; 闲来无事&#xff0c;我们今天探讨下音视频绕不开的一个话题&#xff1a;WebRTC。WebRTC之于音视频行业&#xff0c;无异于FFMpeg&#xff0c;可以说WebRTC的开源&#xff0c;让音视频行业大跨步进入发展快车道。 WebRTC是一个支持实时音视频通信的开…