Leetcode:1035. 不相交的线、53. 最大子数组和(C++)

news2024/9/27 5:36:32

目录

1035. 不相交的线

题目描述:

实现代码与解析:

动态规划

原理解析:

53. 最大子数组和

题目描述:

实现代码与解析:

动态规划

原理思路:


1035. 不相交的线

题目描述:

        在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。

现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:

  •  nums1[i] == nums2[j]
  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1:

输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。 
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

示例 2:

输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
输出:3

示例 3:

输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
输出:2

提示:

  • 1 <= nums1.length, nums2.length <= 500
  • 1 <= nums1[i], nums2[j] <= 2000

实现代码与解析:

动态规划

class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {

        vector<vector<int>> f(nums1.size() + 1, vector<int>(nums2.size() + 1));

        for (int i = 1; i <= nums1.size(); i++)
            for (int j = 1; j <= nums2.size(); j++)
                if (nums1[i - 1] == nums2[j - 1]) f[i][j] = f[i - 1][j - 1] + 1;
                else f[i][j] = max(f[i - 1][j], f[i][j - 1]);
        
        return f[nums1.size()][nums2.size()];
    }
    
};

原理解析:

        其实就和求最长公共子序列的题完全一摸一样,只是换了一种表达方式而已。

Leetcode:718. 最长重复子数组、1143. 最长公共子序列(C++)_Cosmoshhhyyy的博客-CSDN博客

53. 最大子数组和

题目描述:

        给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

实现代码与解析:

动态规划

class Solution {
public:
    //动态规划
    int maxSubArray(vector<int>& nums) 
    {
        vector<int> f(nums.size(), 0);
        f[0] = nums[0];
        for (int i = 1; i < nums.size(); i++)
            f[i] = max(f[i - 1] + nums[i], nums[i]);
    
        int res = INT_MIN;
        for (int i = 0; i < nums.size(); i++) res = max(f[i],  res);

        return res;
    }
};

原理思路:

        dp数组含义是以下标 i 为结尾的最大和。

        将 nums[ i ] 加入子数组种,若小于nums[ i ] 则从头开始计算。

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

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

相关文章

移动端永不过时的高薪技术岗位,原来是它……

随着 Android 设备的普及和应用领域的不断扩大&#xff0c;Android Framework 开发需求量将会持续增长&#xff0c;并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景&#xff1a; 1. 特定垂直领域的智能设备&#x…

Jmeter性能测试

一、jmeter多并发 1.线程设置&#xff1a; 线程数——多少个虚拟用户 ramp_up时间(秒)——时间&#xff0c;设置时间内将线程都跑完 循环次数——勾选永远&#xff0c;就一直跑&#xff0c;直到手动停止&#xff1b;输入数字&#xff0c;就是循环多少次 2.jmeter逻辑分支控制…

关于MySQL性能优化方案,掌握这一篇就够了!

目录 前言 一、设置索引 1、索引的优缺点: 2、给表列创建索引 3、查看索引 4、删除索引&#xff1a; 5、索引原理&#xff1a; 二、分类讨论 三、针对偶尔很慢的情况 1、 数据库在刷新脏页&#xff08;flush&#xff09; 2. 拿不到锁我能怎么办 四、针对一直都这…

力扣题库刷题笔记16--最接近的三数之和

1、题目如下&#xff1a; 2、个人Python代码实现 本题的思路应该与很早之前刷的第15题三数之和是一个思路&#xff1a; 1、先将数组排序&#xff0c;然后进行遍历数组 2、确定左指针、右指针 3、判断三个数之和是否接近目标值 4、重点是&#xff0c;为确保左右指针不是同一个元…

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址&#xff1a; https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模&#xff0c;因为他每次看一个比较小的窗口&#xff0c;如果两个像素隔得比较…

6.STM32时钟系统

1.时钟系统框图: HSI&#xff1a;高速的内部时钟->8MHz;HSE&#xff1a;外部高速时钟->8MHz;PLL&#xff1a; 锁相环->用于倍频(放大频率)&#xff1b;CSS&#xff1a;时钟监控系统(一旦检测到HSE(外部晶振)失败&#xff0c;将会自动切换系统时钟源HSI)&#xff1b;LS…

高等数学函数的性质

&#xff08;本文内容为个人笔记分享&#xff09; 牛顿二项公式 ( x y ) n ∑ k 0 n C n k ⋅ x n − k y k (xy)^n\stackrel{n}{\sum\limits_{k0}}C^k_n\sdot x^{n-k}y^k (xy)nk0∑​n​Cnk​⋅xn−kyk. 映射 f : X → Y f:X\rightarrow Y f:X→Y&#xff0c; f f f 为 …

成功解决RuntimeError:Unable to find a valid cuDNN algorithm to run convolution

该错误有可能是由于GPU不足导致的 有两种解决方法: 方法一&#xff1a;指定device 在指定device时&#xff0c;没有指定具体的卡 只用了如下代码 device torch.device("cuda" if torch.cuda.is_available() else "cpu")默认使用了index0的卡&#xff0…

CppUTest——【由JUnit移植过来的】C++单元测试框架——的下载安装

C单元测试框架CppUTest的下载与安装 简介下载地址单元测试框架下载单元测试被测工程下载 安装安装Cygwin下载地址安装步骤手动安装CMake 编译单元测试框架CppUTest 导入到Virtual Studio准备条件根据VS版本选择导入对应的.sln文件 简介 CppUnit是【由JUnit移植过来的】C测试框…

每日一练 | 华为认证真题练习Day65

1、如果一个以太网数据帧的Length/Type0x8100&#xff0c;那么这个数据帧的载荷不可能是&#xff1f;&#xff08;多选&#xff09; A. ARP应答报文 B. OSPF报文 C. RSTP数据帧 D. STP数据帧 2、路由器某接口配置信息如下&#xff0c;则此端口可以接收携带哪个VLAN的数据包…

《C++ Primer》--学习8

vector 对象是如何增长的 当不得不获取新的内存空间时&#xff0c;vector 和 string 的实现通常会分配比新的空间需求更大的内存空间&#xff0c;容器预留这些空间作为备用&#xff0c;这样就不用每次添加新元素都重新分配容器的内存空间了 管理容器的成员函数 capacity 和 …

高速电路设计系列分享-带宽和动态范围

目录 概要 整体架构流程 技术名词解释 1.带宽 2.动态范围 小结 概要 提示&#xff1a;这里可以添加技术概要 本文继续熟悉一些基本概念。 在许多技术领域,我们习惯于把技术进步与更高的速率关联起来:从以太网到无线局域网再到蜂窝移动网络&#xff0c;数据通信的实质就是不断…

MySQL8.0(Win)的安装步骤

MySQL8.0&#xff08;Win&#xff09;的安装步骤 MySql8.0 安装网址MySql8.0 安装界面界面一界面二界面三界面四界面五界面六界面七界面八界面十界面十一 查看 MySql8.0 安装结果配置MySql8.0的环境变量Path使用命令行访问MySQL的安装结果使用命令行操作MySQL数据库显示MySQL中…

Fiddler 简单抓包

文章目录 一、Fiddler 简介二、下载 Fiddler三、功能介绍1、Filters2、Inspectors3、Automatic BreakPoints4、TextWizard5、其他常用功能 一、Fiddler 简介 Fiddler是一个http协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的http通讯&#xff0c;设…

计算机由于找不到msvcr120.dll无法执行代码的解决方法分享

运行软件程序或游戏的时候&#xff0c;计算机提示由于找不到msvcr120.dll无法执行代码是怎么回事呢&#xff1f;msvcr120.dll是Microsoft Visual C的一部分&#xff0c;用于在Windows操作系统上运行C应用程序。它是一个动态链接库文件&#xff0c;包含了许多C运行时库&#xff…

【日志1】rsyslog,logrotate,post_code,journalctl

文章目录 1.rsyslog&#xff1a;rsyslogd一个进程 &#xff0c;管理每个进程发来的log并往/var/log里写&#xff0c;syslog函数将log写给rsyslogd进程&#xff0c;rsyslogd -v2.logrotate&#xff1a;logrotate /etc/logrotate.rsyslog&#xff08;bb中重命名&#xff09;3.pos…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 26 日论文合集)

文章目录 一、检测相关(4篇)1.1 Bridging the Performance Gap between DETR and R-CNN for Graphical Object Detection in Document Images1.2 Cascade Subspace Clustering for Outlier Detection1.3 Lesion Detection on Leaves using Class Activation Maps1.4 Deep Omni-…

UI还不错的视频播放器:GOMPlayerPlus

之前给各位小伙伴们测试过一款叫【完美解码】开源的播放器&#xff0c;今天给各位同学测试了一款小编认为不错的UI视频播放器&#xff0c;大家也可以测试学习下&#xff0c;顺便也可以对比下看看是【完美解码】好用还是【GOMPlayerPlus】好用。 一、简单介绍 这款影音播放器是…

Git Bash介绍

Git Bash介绍 Git是一个版本控制工具&#xff0c;而Git Bash是在Windows系统中运行Git命令的命令行界面工具。您可以使用Git Bash来管理和操作Git仓库。当你在Windows系统上安装Git时&#xff0c;它会默认安装Git Bash。 Git Bash是git(版本管理器)中提供的一个命令行工具&am…

数据库监控与调优【九】—— 索引数据结构

索引数据结构-B-Tree索引、Hash索引、空间索引、全文索引 二叉树查找 对于相同深度的节点&#xff0c;左侧的节点总是比右侧的节点小。在搜索时&#xff0c;如果要搜索的值key大于根节点&#xff08;图中6&#xff09;&#xff0c;就会在右侧子树里查找&#xff1b;key小于根…